码迷,mamicode.com
首页 > 其他好文 > 详细

索引失效

时间:2020-07-17 09:18:58      阅读:79      评论:0      收藏:0      [点我收藏+]

标签:creat   方式   load   顺序   xpl   sql   百分号   法则   重要   

1.索引失效

  技术图片

 

 

2.全职匹配

  索引都加上

create index idx_all on employee(`name`, dep_id, age);

  然后写sql的时候,所有的索引都加上,则是全职匹配

 

3.最佳左前缀法则

  如果前面的跳过,则后面的索引失效

  顺序就不再重要了

 

4.函数计算会导致索引失效

explain 
select * from employee where trim(age) = 10

  但是这样是可以走索引,后面说明,这里是实验:

explain 
select age from employee where trim(age) = 10

  技术图片

 

 

5.范围条件使得右边的索引失效

explain 
select * from employee where name = ‘鲁班‘ and dep_id >2 and age =1

  技术图片

 

  说明:

  age的索引是失效了,只有前面的索引没有失效

 

6.使用!=或者<>也会索引失效

  下面有好几个示例,结论是,如果不能让这个索引从前面失效,还是会使用index_all的

explain 
select * from employee where name != ‘鲁班‘ and dep_id =2 and age =1

  技术图片

 

   说明:

  走的是dep_id的索引

explain 
select * from employee where name = ‘鲁班‘ and dep_id = 4 and age != 10

  技术图片

 

 

explain 
select * from employee where name = ‘鲁班‘ and dep_id != 4 and age = 10

  技术图片

 

 

7.is not null也会失效

 

8.or也会导致索引的失效

 

9.like导致的失效

  如果百分号在后面,索引不会失效,但是要在前面会失效

explain 
select * from employee where name like ‘鲁%‘ 

  技术图片

 

 

二:解决方式

1.尽量使用覆盖索引

explain 
select age from employee where name like ‘%鲁‘ 

  技术图片

 

   说明:

  虽然,没有写name,但是也使用了索引

  但是发现,filtered并不好

 

 

 

 

  

 

索引失效

标签:creat   方式   load   顺序   xpl   sql   百分号   法则   重要   

原文地址:https://www.cnblogs.com/juncaoit/p/13326621.html

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