MySQL高级性能优化---索引失效

造成索引失效有多个原因,本文讲解索引失效的原因有哪些

1. 全值匹配

给employee表建立一个复合索引

CREATE INDEX idx_name_dpeid_age on employee(name,dep_id, age)

查询时候尽量全部用上建立的复合索引
在这里插入图片描述

2. 最佳左前缀法则

如果建立了多列索引,要遵守最左前缀法则,指的就是从索引的最左列开始,并且不跳过索引中的列。
跳过第一个,索引失效
跳过前两个,索引失效
跳过中间一个只有第一个生效
顺序可以乱
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

说明不遵循左前缀法则,会导致索引失效

3. 不在索引列上做任何操作

计算,函数,类型转换等会导致索引失效而转向全表扫描
在这里插入图片描述
在这里插入图片描述

4. 范围条件右边的索引失效

在这里插入图片描述

5. 索引列使用不等于(!=或者<>)的时候无法使用索引会导致全表扫描

在这里插入图片描述
在这里插入图片描述

6. is not null 无法使用索引

在这里插入图片描述

7. 少于or用or连接时导致索引失效

在这里插入图片描述

8. like以通配符开头(%qw)索引失效变成全表扫描

在这里插入图片描述
在这里插入图片描述

为了避免以上情况索引失效,我们可以使用覆盖索引来避免以上情况

*** 尽量使用覆盖索引

覆盖索引:查询的字段和建立的字段刚好吻合,这种我们称为覆盖索引
在这里插入图片描述

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值