联合索引失效的问题
来源: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执行器,依据最优条件去判断
00
相似问题