使用索引時數量和順序應該和建立索引時是一致的,保證全值匹配;
最佳的左字首法則;
不要在索引列做任何操作(計算,函式,(自動和手動)型別轉換),會導致索引失效;
儲存引擎不能使用索引中範圍條件右邊的列;
盡量使用覆蓋索引(只訪問索引的查詢(索引列和查詢列一致)),減少使用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...