mysql 索引失效的7種情況

2021-10-19 01:17:40 字數 1146 閱讀 2443

** 

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.索引使用 時,效果...

索引失效的7種情況

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

mysql索引失效情況

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