MySQL索引失效的幾種情況
阿新 • • 發佈:2021-01-07
一,使用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