MySQL索引失效的幾種情況


一,使用Like關鍵字查詢語句

首先看下我的測試表的行數:

select  count(0) from tb_user

 

 結果如下:

一共16行。

使用like '% ':

explain select * from tb_user where username like '%si'

分析結果:

 

 發現查詢了16行,吼吼~~就是全查唄~

next:

explain select * from tb_user where username like 'li%'

結果:

 

 發現只掃了2行就get到了。

小結:

在使用like 開頭進行查詢是,如果匹配字符串的第一個字符為'%',索引不會起作用,只有‘%’不在第一個字符,索引才會起作用。

二,使用多列索引的查詢語句

首先插入多列的索引:

create index testIndex on tb_user(username,phone)
show index from tb_user

 

 之后根據手機號進行查詢:

 

 之后根據ID進行查詢:

 

可以看出在以username跟phone同時作為主鍵的時候,按照phone進行查詢,掃描16行,但是按照username查詢,掃描1行。

小結:

     對於多列索引,查詢的時候只有使用了多列索引的第一個字段,索引才會生效。

三,使用OR關鍵字

分析查詢語句:

explain select * from tb_user where phone=1370348890 or id=3

 

 當使用or關鍵字進行查詢時候,只有當or兩邊的查詢條件都是索引列時候,才使用索引。

 

版權聲明:本文為博主原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。

本文鏈接: https://blog.csdn.net/weixin_34194087/article/details/90304651

 


免責聲明!

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



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