联合索引失效的问题

来源:3-9 索引额外问题之最左匹配原则的成因

00s

2022-06-03

联合索引是根据key_len来计算每个索引列是否生效,
举例:a、b、c三个字段为联合索引(a, b, c),每个字段代表的key_len如下:

	a的key_len = 2
	b的key_len = 4
	c的key_len = 8

问题:
select * from table where a = 1 and b > 2 and c = 3
当条件中b>2时,explain的key_len=6;当条件中b>=2时,explain的key_len=14
也就说明,多了一个等号,右侧索引就不会失效了,请问老师这是为什么呀?

写回答

1回答

翔仔

2022-06-04

同学好,根据最左匹配原则,如果三个and都有等于的话,是可能会走a,b,c联合索引的,如果是a = 1 and b > 2的话,基本是走a,b索引。但是实际情况也取决于mysql执行器,依据最优条件去判断

0
0

剑指Java面试-Offer直通车 百度资深面试官授课

招聘季即将到来,让百度资深面试官来为你的高薪Offer保驾护航

8427 学习 · 1870 问题

查看课程