索引查詢失效情況總結

2021-10-08 23:51:53 字數 790 閱讀 7003

好久沒寫了,近期sql優化效能的問題比較多,打算整理下sql索引相關知識:

未完待持續跟進總結

先彙總下下網上一下大佬相關的筆記

mysql索引查詢失效的情況

索引查詢失效的幾個情況:

1、like 以%開頭,索引無效;當like字首沒有%,字尾有%時,索引有效。

2、or語句前後沒有同時使用索引。當or左右查詢字段只有乙個是索引,該索引失效,只有當or左右查詢欄位均為索引時,才會生效

3、組合索引,不是使用第一列索引,索引失效。

4、資料型別出現隱式轉化。如varchar不加單引號的話可能會自動轉換為int型,使索引無效,產生全表掃瞄。

5、在索引列上使用 is null 或 is not null操作。索引是不索引空值的,所以這樣的操作不能使用索引,可以用其他的辦法處理,例如:數字型別,判斷大於0,字串型別設定乙個預設值,判斷是否等於預設值即可。

6、在索引欄位上使用not,<>,!=。不等於操作符是永遠不會用到索引的,因此對它的處理只會產生全表掃瞄。 優化方法: key<>0 改為 key>0 or key<0。

7、對索引字段進行計算操作、欄位上使用函式。(索引為 emp(ename,empno,sal))

8、當全表掃瞄速度比索引速度快時,mysql會使用全表掃瞄,此時索引失效。

索引失效分析工具:

可以使用explain命令加在要分析的sql語句前面,在執行結果中檢視key這一列的值,如果為null,說明沒有使用索引。

explain命令的詳細用法,可以檢視這篇文章:

參考:3萬字總結,mysql優化之精髓

Mysql索引查詢失效的情況

首先,複習一下索引的建立 普通的索引的建立 create index 自定義 索引名 on 資料表 字段 復合索引的建立 create index 自定義 索引名 on 資料表 字段,字段,刪除索引 drop index 索引名 以下通過explain顯示出mysql執行的字段內容 索引查詢失效的幾...

索引失效的情況

索引並不是時時都會生效的,比如以下幾種情況,將導致索引失效 如果條件中有or,即使其中有條件帶索引也不會使用 這也是為什麼盡量少用or的原因 注意 要想使用or,又想讓索引生效,只能將or條件中的每個列都加上索引 對於多列索引,不是使用的第一部分,則不會使用索引 like查詢是以 開頭 如果列型別是...

mysql索引失效情況

1 沒有查詢條件,或者查詢條件沒有建立索引 2 在查詢條件上沒有使用引導列 3 查詢的數量是大表的大部分,應該是30 以上。4 索引本身失效 5 查詢條件使用函式在索引列上,或者對索引列進行運算,運算包括 等 錯誤的例子 select from test where id 1 9 正確的例子 sel...