MySQL無法命中索引的情況總結


1、如果條件中有 or ,即使其中有條件帶索引也不會使用(這也是為什么盡量少用or的原因)

MySQL無法命中索引的情況總結

 

注意:要想使用or,又想讓索引生效,只能將or條件中的每個列都加上索引

如果出現OR的一個條件沒有索引時,建議使用 union ,拼接多個查詢語句

 

2.、like查詢是以%開頭,索引不會命中

MySQL無法命中索引的情況總結

 

只有一種情況下,只查詢索引列,才會用到索引,但是這種情況下跟是否使用%沒有關系的,因為查詢索引列的時候本身就用到了索引

MySQL無法命中索引的情況總結

 

3. 如果列類型是字符串,那一定要在條件中將數據使用引號引用起來,否則不使用索引

MySQL無法命中索引的情況總結

 

4. 沒有查詢條件,或者查詢條件沒有建立索引

5. 查詢條件中,在索引列上使用函數(+, - ,*,/), 這種情況下需建立函數索引

6. 采用 not in, not exist

7. B-tree 索引 is null 不會走, is not null 會走

8. 鏈表時,如果關聯字段的的編碼不同,也不會走索引。如一個表時 utf8,另外一個表是utf8mb4


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM