索引失效場景

渣渣在路上發表於2020-09-26

總結一下常見的幾種索引失效場景:

1. 使用 or 的時候 某些欄位沒有加索引, 導致加索引的欄位也沒能走索引

2. 索引欄位加了函式

3. 對索引條件進行了運算

4. 型別轉換

5. where is null  和 is not null


6. like 不是 走 '%' 右匹配

7. 聯合索引 要按順序使用  (a, b, c) ->   a |  a,b  | a,b,c ,  不然會導致個別索引失效

--------------------------------------------------------------------------------------------------------------------------------------------------------

經典慢sql 案例分析: 

 Impossible WHERE noticed after reading const tables 

解釋原因如下:

根據主鍵查詢或者唯一性索引查詢,如果這條資料沒有的話,它會全表掃描,然後得出一個結論,該資料不在表中。

對於高併發的庫來說,這條資料,會讓負載特別的高。

https://developer.aliyun.com/article/393774

 

強制使用索引:  fore index

select * from t_test fore index(key_index) where `key` in (1,2) ;

強制不使用索引 : ignore index

select * from t_test ignore index(key_index) where `key` in (1,2) ;

相關文章