码迷,mamicode.com
首页 > 数据库 > 详细

Mysql 索引失效场景

时间:2019-09-26 19:56:28      阅读:113      评论:0      收藏:0      [点我收藏+]

标签:全表扫描   场景   问题   也会   原则   sele   生效   tail   协议   

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

Mysql 索引失效场景

标签:全表扫描   场景   问题   也会   原则   sele   生效   tail   协议   

原文地址:https://www.cnblogs.com/aligege/p/11593929.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!