所在的位置: mysql >> mysql前景 >> MySQL索引失效的场景

MySQL索引失效的场景

北京哪家医院治疗白癜风得好 http://disease.39.net/yldt/bjzkbdfyy/

1.like以%开头,索引无效;

举例字段name创建索引

nameLike‘%abc’失效

nameLike‘abc%’有效

2.or语句前后没有同时使用索引

举例name、age两个字段创建索引

and(namelike‘abc%’orsex=’1’)索引失效

and(namelike‘abc%’orage=18)索引有效

3.不满足最左前缀原则

组合索引(name,age,sex)

whereage=18andset=1无效

whereset=1无效

whereage=18andname=‘小红’有效

wherenamelike‘小%’有效

特殊场景范围索引列没有放在最后,会导致后面的索引失效

wherename=‘小红’andage18andsex=1

索引name、age有效,set无效。

4.索引列有计算

select*fromstudentwhereage+1=18age索引无效

5.索引列上使用了函数

Name为索引

whereleft(name,2)=‘小红’无效

6.字符类型没加引号

name为字符串

wherename=1

7.使用notin会导致索引失效

8.使用不等号会导致索引失效(!=或者)

9.使用isnotnull或者isnull会导致索引失效

10.使用了select*fromtable索引无效

Selectnamefromstudent;name索引有效

特别说明

mysql通过索引扫描的行记录数,如果超过全表的10%至30%左右,优化器也可能不会走索引,自动变成全表扫描。




转载请注明:http://www.aierlanlan.com/cyrz/6922.html

  • 上一篇文章:
  •   
  • 下一篇文章: