索引失效的原因

1、where条件里用or
2、联合索引,查询时的条件列不是联合索引中的第一个列。
3、like以'%'开头
注:并不是用了like通配符,索引一定失效,而是like查询是以%开头,才会导致索引失效。
4、字段类型转换
select * from user where name=123
select * from user where name='123'

注:第一条语句未加单引号就不走索引,因为不加单引号时,是字符串跟数字的比较,类型不匹配,MySQL会做隐式的类型转换,把它们转换为浮点数再做比较。


5、where中索引列进行了运算(如,+、-、*、/)
6、where中索引列使用了函数
7、mysql估计使用全表扫描要比使用索引快,则不使用索引
8、is not null 不走索引,is null 走索引。
9、索引字段上使用(!= 或者 < >,not in)。
10、左连接查询或者右连接查询,查询关联的字段编码格式不一样。
posted @ 2023-06-21 16:56  Lu1998  阅读(326)  评论(0)    收藏  举报