mysql having 索引_总结Mysql 索引优化,给有需要的人看

创建表、创建索引

分析case索引使用情况

一个20左右的表,建立三个左右的索引常规沟通,但是根据自己情况

17704dc98fe5dede6b615bd491e5083ee.png

分析一下:

1、创建复合索引的顺序为c1,c2,c3,c4

2、explain执行的结果:type=ref,key_len=132,ref=const,const,const,const

结论:在执行常量等值查询时,改版索引列的顺序并不会更改explan的执行结果,因为Mysql底层优化器会进行优化,但是推荐索引顺序列编写sql语句。

2b3295e895f312c27b8ec397c2b6ce1f4.png

分析:

当出现范围的时候,type=range,key_len=99,比不用范围key_len=66增加了,说明使用上了索引,但对比Case1中执行结果,说明c4上索引失效。

结论:

范围右边索引列失效,但是范围当前位置(c3)的索引是有效的,从key_len=99可证明。

2.120c094b606f4ea6e4f942e1e66d43c0c.png

分析:

与上面explain执行结果对比,key_len=132说明索引用到了4个,因为对此sql语句mysql底层优化器会进行优化:范围右边索引列失效(c4右边已经没有索引列了),注意索引的顺序(c1,c2,c3,c4),所以c4右边不会出现失效的索引列,因此4个索引全部用上。

结论:

范围右边索引列失效,是有顺序的:c1,c2,c3,c4,如果c3有范围,则c4失效;如果c4有范围,则没有失效的索引

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值