例如:一張USER表 有字段屬性 name,age 其中name為索引
下面列舉幾個索引失效的情況
1. select * from USER where name=‘xzz’ or age=16;
例如這種情況:當語句中帶有or的時候 即使有索引也會失效。
2.select * from USER where name like‘%xzz’ ;
例如這種情況:當語句索引 like 帶%的時候索引失效(注意:如果上句為 like‘xzz’此時索引是生效的)
3.select * from USER where name=123;(此處只是簡單做個例子,實際場景中一般name不會為數字的)
例如這種情況:如果列類型是字符串,那一定要在條件中將數據使用引號引用起來,否則不使用索引
4.如果mysql估計使用全表掃描要比使用索引快,則不使用索引(這個不知道咋舉例子了 )
5.假如上述將name和age設置為聯合索引,一定要注意順序,mysql聯合所以有最左原則,下面以name,age的順序講下
(1)select * from USER where name=‘xzz’ and age =11;
(2)select * from USER where age=11 and name=‘xzz’;
例如上訴兩種情況:以name,age順序為聯合索引,(1)索引是生效的,(2)索引是失效的
6.比如age為索引:select * from USER where age-1>11;
例如這種情況:索引失效,不要在索引上進行操作,否則索引會失效(是有類似時間轉換的問題和上訴問題一樣)
————————————————
版權聲明:本文為CSDN博主「程序員_王者or青銅」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_27101653/article/details/81296988