最左匹配原则的误区,联合索引的使用细节

文章讨论了SQL查询中联合索引(如(a,b))在不同条件下的使用情况,指出在不等式、等于和范围查询中,即使某些条件看似不直接依赖于联合索引,但实际查询过程中可能都会利用到索引,特别是当满足特定条件时,如有序字段的范围限制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Q1: select * from t_table where a > 1 and b = 2,联合索引(a, b)哪一个字段用到了联合索引的 B+Tree?
A1: easy啊,a用到了,b没用到。因为符合 a > 1 条件的二级索引记录的范围里,b 字段的值是无序的
Q2: select * from t_table where a >= 1 and b = 2,联合索引(a, b)哪一个字段用到了联合索引的 B+Tree?
A2: 你也许会说和上面Q1一样,a用到,b用不到。然而实际上是都能用到的。在a > 1 and b = 2这一部分确实用不到,但是a = 1 and b = 2是可以的,因为对于符合 a = 1 的二级索引记录的范围里,b 字段的值是「有序」的。二级所以扫描会从a = 1 and b = 2开始而不是a ≥\ge 1开始,声调一部分扫描
Q3: SELECT * FROM t_table WHERE a BETWEEN 2 AND 8 AND b = 2,联合索引(a, b)哪一个字段用到了联合索引的 B+Tree?
A3: 和Q2一样,都用到了。从a = 2 and b = 2开始。
Q4: SELECT * FROM t_user WHERE name like ‘j%’ and age = 22,联合索引(name, age)哪一个字段用到了联合索引的 B+Tree?
A4: 同理,也是都用到了,从name = ‘j’ and age = 2开始。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值