MySQL索引失效的原因總結

2021-10-10 03:28:47 字數 691 閱讀 2843

使用索引時數量和順序應該和建立索引時是一致的,保證全值匹配

最佳的左字首法則

不要在索引列做任何操作(計算,函式,(自動和手動)型別轉換),會導致索引失效;

儲存引擎不能使用索引中範圍條件右邊的列

盡量使用覆蓋索引(只訪問索引的查詢(索引列和查詢列一致)),減少使用select *;

mysql在使用不等於(!=或者<>)的時候無法使用索引會導致全表掃瞄;

is null,is not null也無法使用索引

like以萬用字元開頭(』%abc…』)索引失效會變成全表掃瞄的操作;

字串不加單引號索引失效

少用or,用它來連線時會索引失效;

優化口訣:

全值匹配我最愛,最左字首要遵守

帶頭大哥不能死,中間兄弟不能斷

索引列上少計算,範圍之後全失效

like百分寫最右,覆蓋索引不寫星

不等空值還有or, 索引失效要少用

var引號不可丟,sql高階也不難

Mysql引起索引失效的原因總結

在資料庫中做查詢等操作,經常發現查詢很慢,但是已經在列上建了索引,最後經過研究發現,很多種情況引起了索引失效。下面就對遇到的引起索引失效的原因做一下總結 不包括索引本身無效的情況 歡迎博友們補充。1 對單字段建了索引,where條件多欄位。例 建了以下索引 查詢語句 html view plain ...

Mysql引起索引失效的原因總結

sql語句where中如果有functionname colname 或者某些運算,則mysql無法使用基於colname的索引。使用索引需要直接查詢某個字段。索引失效的原因是索引是針對原值建的二叉樹,將列值計算後,原來的二叉樹就用不上了 為了解決索引列上計算引起的索引失效問題,將計算放到索引列外的...

Mysql引起索引失效的原因總結

1 對單字段建了索引,where條件多欄位。2 建立聯合索引,where條件單字段。與上面情況正好相反。最左原則 例如 索引 a.b.c。條件 ab,ac,a,都會生效,bc不會生效 3 對索引列運算,運算包括 like 放在前面 or in exist等 導致索引失效。4 型別錯誤,如欄位型別為v...