1. 程式人生 > >MySQL執行計劃優化(SQL優化,避免索引無效的小技巧)

MySQL執行計劃優化(SQL優化,避免索引無效的小技巧)

如果以下場景,及時相關欄位建立了索引,也無法使用索引,在寫SQL時要避免以下情況的出現

1.查詢條件中 建立索引的欄位列 最左一萬用字元 % 開始,例如 where a like '%xx';

2.查詢條件中 建立索引的欄位列 使用 IS NULL 或 IS NOT NULL;

3.查詢條件中 建立索引的欄位列 使用 關鍵詞 OR;

4.查詢條件中 建立索引的欄位列 上進行數字運算或函式運算(包括隱式資料轉換);

5.查詢條件中 建立索引的欄位列 使用負向查詢條件: NOT、!=、<>、!<、!>、NOT IN、NOT LIKE等;

6.對於複合索引,查詢條件沒有匹配第一個索引列,即使覆蓋了其他索引列,也無法使用索引,因為複合索引是按從左到右一次匹配,即從第一個索引列開始,一致到最後一個索引列;中間如果出現欄位不能匹配,則後續的索引欄位不會再匹配;

另外,主鍵欄位不需要在建立索引,例如:已針對(a,b)建立主鍵,就不需要在對 a 或(a,b)建立索引;不過,如果已針對(a)建立主鍵,可以針對(b,a)建立索引;