联合索引最左匹配原则

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

qq_Loveyoulovef_0

2019-01-27

按照课程中关于最左匹配原则的说明建立了一张表,DDL如下:
CREATE TABLE user_info_large (
id int(11) NOT NULL AUTO_INCREMENT,
a varchar(32) NOT NULL,
b varchar(32) NOT NULL,
c varchar(32) NOT NULL,
d varchar(32) NOT NULL,
PRIMARY KEY (id),
KEY indx_keys (a,b,c)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
执行 explain select * from user_info_large where a=‘aa1’ and b like ‘%bb%’ and c=‘cc1’ 结果如下:
图片描述貌似和教程中对于最左匹配原则遇到范围查询就停止匹配的原则不一致啊,是我哪儿理解的有问题?

写回答

1回答

翔仔

2019-01-28

同学好,最左匹配原则,视频里指的是比如说设置(a,b,c,d)联合索引  如果 where a=1 and b=2 and c >3 and d=4 则不会走,即便where a=1 and b=2 and  d=4  and  c >3也不会走,跟字段顺序无关,如果你是where a=1 and b=2 and c =3 and d>4 或者 where a=1 and b=2 and d=4   and  c >3 也还是会走

0
3
YoungFFan
回复
qq_Loveyoulovef_0
你这种情形不会使用(a,b,c)索引。但是建立(a,b,c)联合索引就相当于建立了(a),(a,b),(a,b,c)这三个索引,你这种情形从b列开始索引失效,但a列索引依然发挥作用,相当于使用了(a)索引。
2019-06-12
共3条回复

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

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

8427 学习 · 1870 问题

查看课程