索引失效的幾種情況

2021-08-25 14:04:24 字數 313 閱讀 4767

使用explain sql 可檢視mysql執行計畫

type為掃瞄型別,key為使用索引型別

1.使用了or (除非or的列都加上了索引)

2.聯合索引 未符合索引字段順序

3.like查詢 使用前%不走索引

4.字元型不加引號 資料庫自動轉換成數值型 (資料型別不統一)不走索引

5.sql中使用函式,運算操作 

6.對於內容基本重複的列,比如只有1和0,禁止建立索引,因為該索引選擇性極差,在特定的情況下會誤導優化器做出錯誤的選擇,導致查詢速度極大下降

7.mysql掃瞄全表比索引快 不走索引

索引失效的幾種情況

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

MySQL索引失效的幾種情況

更準確的說,單列索引不儲存null值,復合索引不儲存全為null的值。索引不能儲存null,所以對這列採用is null條件時,因為索引上根本 沒null值,不能利用到索引,只能全表掃瞄。為什麼索引列不能存null值?將索引列值進行建樹,其中必然涉及到諸多的比較操作。null值的特殊性就在於參與的運...

MySQL索引失效的幾種情況

a.單列索引無法儲null值,復合索引無法儲全為null的值。b.查詢時,採用is null條件時,不能利用到索引,只能全表掃瞄。為什麼索引列無法儲存null值?a.索引是有序的。null值進入索引時,無法確定其應該放在 將索引列值進行建樹,其中必然涉及到諸多的比較操作,null 值是不確定值無法 ...