【高并发高性能高可用之海量数据MySQL实战-17】-MySQL索引优化失效分析实战

1:案例环境

2:案例演示

1:全值匹配我最爱

2:最佳左前缀法则

带头索引不能死,中间索引不能断

如果索引了多个列,要遵守最佳左前缀法则。指的是查询从索引的最左前列开始  并且不跳过索引中的列。

正确的示例参考上图。

错误的示例:

带头索引死:

 3:不要在索引上做计算

不要进行这些操作:计算、函数、自动/手动类型转换,不然会导致索引失效而转向全表扫描

 4:范围条件右边的列失效

不能继续使用索引中范围条件(bettween<>in等)右边的列

5: 尽量使用覆盖索引

尽量使用覆盖索引(只查询索引的列),也就是索引列和查询列一致,减少select *

6:索引字段上不要使用不等

索引字段上使用(!= 或者 < >)判断时,会导致索引失效而转向全表扫描

 7:索引字段上不要判断 not null

索引字段上使用 is not null 判断时,会导致索引失效而转向全表扫描,is null 还是可以使用索引的。

8:索引字段使用like不以通配符开头

索引字段使用like以通配符开头(‘%字符串)时,会导致索引失效而转向全表扫描

 

 

由结果可知,like以通配符结束相当于范围查找,索引不会失效。与范围条件(bettween<>in

等)不同的是:不会导致右边的索引失效。

问题:解决like ‘%字符串%’时,索引失效问题的方法?

使用覆盖索引可以解决。

 

 9:索引字段字符串要加单引号

索引字段是字符串,但查询时不加单引号,会导致索引失效而转向全表扫描

10:索引字段不要使用or

索引字段使用 or 时,会导致索引失效而转向全表扫描

3:总结

 4:索引使用口诀

全值匹配我最爱,最左前缀要遵守;

带头大哥不能死,中间兄弟不能断;

索引列上不计算,范围之后全失效;

Like百分写最右,覆盖索引不写星;

不等空值还有OR,索引失效要少用。 

 

如果您觉得文章好看,欢迎点赞收藏加关注,一连三击呀,您的肯定是我持续输出的动力,感谢!!☺☻ 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不要迷恋发哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值