大蛇丸實驗室之Oracle by DWLIJX

2021-07-07 06:53:54 字數 844 閱讀 6661

大蛇丸實驗室1:為什麼有些查詢死活不走索引?

不走索引結論:

a、建立組合索引,但查詢謂詞並未使用組合索引的第一列,此處有乙個index skip scan概念。

b、在包含有null值的table列上建立索引,當時使用select count(*) from table時不會使用索引。

c、在索引列上使用函式時不會使用索引,如果一定要使用索引只能建立函式索引。

d、當被索引的列進行隱式的型別轉換時不會使用索引。如:select * from t where indexed_column = 5,而indexed_column列建立索引但型別是字元型,這時oracle會產生

隱式的型別轉換,轉換後的語句類似於select * from t where to_number(indexed_column) = 5,此時不走索引的情況類似於case3。日期轉換也有類似問題,如:

select * from t where trunc(date_col) = trunc(sysdate)其中date_col為索引列,這樣寫不會走索引,可改寫成select * from t where date_col >= trunc(sysdate)

and date_col < trunc(sysdate+1),此查詢會走索引。

e、並不是所有情況使用索引都會加快查詢速度,full scan table 有時會更快,尤其是當查詢的資料量佔整個表的比重較大時,因為full scan table採用的是多塊讀,

當oracle優化器沒有選擇使用索引時不要立即強制使用,要充分證明使用索引確實查詢更快時再使用強制索引

f、由於長期的資料io、索引建立不當,會導致資料分布散亂,優化器在即使索引有效的情況下還是會選擇全表掃瞄.

Unity實驗室之Shader優化

最近有人問到寫shader需要注意哪些地方及如何優化,正好筆者也在研究這方面,這裡主要針對unity來說,其它平台或引擎也可以參考,本文主要分如下幾個方面來說 shader的選擇,屬性和狀態的設定,資料型別選擇,編寫,舉例,除錯 unity中現在可以新建4種shader,分別是standard su...

AR實驗室 ARToolKit之概述篇

我從去年就開始對ar augmented reality 技術比較關注,但是去年ar行業一直處於偶爾發聲的狀態,絲毫沒有其 異姓同名 的兄弟vr virtual reality 火爆。至於mr mixed reality 更像是google glass事情之後對ar的洗白。但是今年ar行業出了件大事...

Unity實驗室之選擇哪個Unity版本

unity版本公升級比較快,版本比較多,筆者寫這篇文章時官方正式版是2017.3,正在測試的版本是2018.1,筆者專案現在使用的是unity5.6.4,而且還有各種各樣的補丁版本,那麼我們在開始新專案或面對老專案該不該公升級的問題上該如何選擇呢?選擇版本時,筆者覺的應該仔細考慮以下幾點 穩定性。如...