oracle 不走索引的幾種情況

來源:互聯網
上載者:User

標籤:字元型   where   百分比符號   情況   null   概念   index   scan   資料   

不走索引的其它原因:     

1、建立複合式索引,但查詢謂詞並未使用複合式索引的第一列,此處有一個INDEX SKIP SCAN概念。     

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

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

4、當被索引的列進行隱式的類型轉換時不會使用索引。如: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),此查詢會走索引。     

5、並不是所有情況使用索引都會加快查詢速度,full scan table 有時會更快,尤其是當查詢的資料量占整個表的比重較大時(大約為大於總量的20%時),因為full scan table採用的是多塊讀,當Oracle最佳化器沒有選擇使用索引時不要立即強制使用,要充分證明使用索引確實查詢更快時再使用強制索引。     

6、<>     

7、like’%dd’百分比符號在前。    

8、not in,not exist

oracle 不走索引的幾種情況

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.