索引失效的7種情況

2022-06-06 14:51:16 字數 1071 閱讀 7813

1.有or必全有索引;

2.復合索引未用左列字段;

3.like以%開頭;

4.需要型別轉換;

5.where中索引列有運算;

6.where中索引列使用了函式;

7.如果mysql覺得全表掃瞄更快時(資料少);

1.唯一性差;

2.頻繁更新的字段不用(更新索引消耗);

3.where中不用的字段;

4.索引使用<>時,效果一般;

索引並不是時時都會生效的,比如以下幾種情況,將導致索引失效:

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

比如資料量極少的表

1) 資料唯一性差(乙個欄位的取值只有幾種時)的字段不要使用索引

比如性別,只有兩種可能資料。意味著索引的二叉樹級別少,多是平級。這樣的二叉樹查詢無異於全表掃瞄。

2) 頻繁更新的字段不要使用索引

比如logincount登入次數,頻繁變化導致索引也頻繁變化,增大資料庫工作量,降低效率。

3)欄位不在where語句出現時不要新增索引,如果where後含is null /is not null/ like 『%輸入符%』等條件,不建議使用索引

只有在where語句出現,mysql才會去使用索引

4)where 子句裡對索引列使用不等於(<>),使用索引效果一般

原文

索引失效的7種情況

1.有or必全有索引 2.復合索引未用左列字段 3.like以 開頭 4.需要型別轉換 5.where中索引列有運算 6.where中索引列使用了函式 7.如果mysql覺得全表掃瞄更快時 資料少 1.唯一性差 2.頻繁更新的字段不用 更新索引消耗 3.where中不用的字段 4.索引使用 時,效果...

mysql 索引失效的7種情況

1.有or必全有索引 2.復合索引未用左列字段 3.like以 開頭 4.需要型別轉換 5.where中索引列有運算 6.where中索引列使用了函式 7.如果mysql覺得全表掃瞄更快時 資料少 1.唯一性差 2.頻繁更新的字段不用 更新索引消耗 3.where中不用的字段 4.索引使用 時,效果...

索引失效的若干種情況

0.建表 上圖首先建了乙個staffs表,然後插入了三條資料,最後建立在乙個組合索引 2.索引優化 我們把組合索引比作成一輛火車,第乙個欄位為火車頭,其他的字段比作一節車廂,火車能執行的前提條件是火車頭不能斷掉,如果中間車廂斷了,那麼後續車廂也不能跑了.總之能夠跑動的車廂所代表的索引都有效.也就是說...