mysql - index 索引 之 索引失效的幾種情況


  1. or:如果條件中有or,即使其中有條件帶索引也不會使用(這也是為什么盡量少用or的原因)
    1. 注意:要想使用or,又想讓索引生效,只能將or條件中的每個列都加上索引
  2. 聯合索引,不是使用的第一部分,則不會使用索引(未滿足最左前綴原則
  3. 模糊查詢:like查詢是以%開頭
    1. 模糊查詢不以 % 開頭,會使用索引
    2. 針對以 % 開頭索引失效的問題,解決方案:使用覆蓋索引
  4. 字符串:如果列類型是字符串,那一定要在條件中將數據使用引號引用起來,否則不使用索引;
  5. 運算操作:在索引列上做任何操作(計算,函數,(自動或者手動)類型裝換),會導致索引失效而導致全表掃描
  6. 范圍條件:存儲引擎不能使用索引中范圍條件右邊的列,范圍之后索引失效。(< ,> between and)
  7. 不等於:mysql使用不等於(!= 或者<>)的時候,無法使用索引,會導致索引失效
  8. 是否為空:mysql中使用is not null 或者 is null會導致無法使用索引
  9. 全表掃描更優:如果mysql估計使用全表掃描要比使用索引快,則不使用索引


免責聲明!

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



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