sql优化,关于联合索引某个中间字段使用>(大于)号,导致后面索引失效的理解

大于号导致索引失效的原因?
mysql先用=号去查数据,找到最后的叶子节点,然后往后推,找大于的所有数据
如果在字段在中间使用大于号,没有通过索引走到底层的叶子节点,那么取出来的数据没有精确到某一个数据上,只是在某个范围里面。形成一个临时表,然后根据后面的条件在这个临时表里面取值。而后面的条件不能使用索引,所以后面的字段自然是索引失效。因为后面的字段使用索引的前提条件是,前面的字段精确到了某一个节点上面,可是前面的字段并没有精确到某个节点,是精确到了很多节点,因此没有办法走索引。

总结:范围查询是精确到最后的叶子节点,也就是找到了数据的情况。
而在中间某个字段使用范围导致后面字段失效的原因,是使用索引并没有精确到数据层(叶子节点层),而是走到了中间的节点层,而且找到了很多节点,导致后面的字段没有办法往下走找数据,因此后面的字段没有走索引。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值