Mysql 索引失效場景


例如:一張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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM