Mysql索引失效場景總結

2021-10-07 18:50:15 字數 663 閱讀 1891

隱式轉換

這種是經常出現的場景,例如表t的字段 name(varchar型別),通過條件查詢傳入數字型別,雖然可以查出所要的結果,但是此時索引沒有命中。

反例: select * from t where name=123;

正例: select * from t where name=『123』;

索引列的運算

在where左側條件中使用運算(+、-、*、/等),會導致索引沒有命中。

反例: select * from t where age+1=123;

正例: select * from t where age=123;

範圍的比較

一些不連續的範圍的比較:in、not in、between…and、!= ,這些在查詢返回多個欄位時,會導致索引失效。

is not null

值得注意的是,is null 並不會導致索引失效。相反,is not null會導致索引失效。

oror查詢會使索引失效

like萬用字元查詢

like查詢遵循左綴原則,當以%開頭時(like 『%abc』),會導致索引失效.

組合索引

組合索引有最左匹配原則,如建立(k1,k2,k3)組合索引,相當於建立了(k1)、(k1,k2)、(k1,k3)和(k1,k2,k3)四個索引,這就是最左匹配原則

mysql 索引失效場景 Mysql 索引失效場景

例如 一張user表 有欄位屬性 name,age 其中name為索引 下面列舉幾個索引失效的情況 1.select from user where name xzz or age 16 例如這種情況 當語句中帶有or的時候 即使有索引也會失效。2.select from user where na...

Mysql 索引失效場景

例如 一張user表 有欄位屬性 name,age 其中name為索引 下面列舉幾個索引失效的情況 1.select from user where name xzz or age 16 例如這種情況 當語句中帶有or的時候 即使有索引也會失效。2.select from user where na...

Mysql 索引失效場景

例如 一張user表 有欄位屬性 name,age 其中name為索引 下面列舉幾個索引失效的情況 1.select from user where name xzz or age 16 例如這種情況 當語句中帶有or的時候 即使有索引也會失效。2.select from user where na...