联合索引关于In和范围查询影响索引使用的情况分析

索引类型
1、unique ,唯一索引
2、normal,普通索引
3、fulltext, 全文索引
4、spatial,空间索引

主键索引是基于主键约束建立的索引,强调唯一且非空;聚簇索引是表数据实际存储所在的索引,强调数据组织方式。在 InnoDB 中,主键通常会被用作聚簇索引,但两者不是完全等价的概念。

样例

在这里插入图片描述
三个字段的联合索引,走一个字段是key_len是5,三个是15.

联合索引关于 使用in是不影响后续列
在这里插入图片描述
联合索引中,>< 属于范围查询,范围列后面的字段通常难以继续像等值条件那样参与精确定位,因此会影响后续列对索引的利用。
在这里插入图片描述
联合索引中,>=<= 也属于范围查询,本质上同样会影响后续列继续参与精确定位。 不过由于边界是否包含等值点不同,执行计划有时会表现为后续列仍然参与了索引判断,例如体现在 key_len 变长,或者通过索引下推(ICP)参与过滤。 因此,不能简单理解为 >=<= 不影响后续索引,而应理解为:它们与 >< 一样都属于范围条件,只是在执行计划上的表现可能有所不同。

在这里插入图片描述
这里需要注意区分“参与索引定位”和“参与索引过滤”两个概念。
范围条件后面的列,很多时候不能继续用于缩小索引扫描范围,但如果这些列仍然包含在联合索引中,就可能通过索引下推(ICP)在索引层先做过滤,从而减少回表次数。
因此,执行计划中看起来“后续列仍然用了索引”,并不一定表示它仍然参与了精确定位。

在where中只要三个字段都包含(顺序不是必须安装最左原则),优化器会自动按照索引顺序走索引。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

贝多芬也爱敲代码

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

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

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

打赏作者

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

抵扣说明:

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

余额充值