面试题之MySQL 5.7 版本联合索引用法

自家的测试环境新建如下一张表:

create table atest(a int,b int ,c int);

插入如下数据:

insert into atest(a,b,c) values(1,2,3);
insert into atest(a,b,c) values(2,3,4);
insert into atest(a,b,c) values(3,4,5);

建立如下联合索引:

create index abc on atest(a,b,c);

问题一:
select * from atest where a = 1;
其中where条件中a字段是否可以使用到abc联合索引呢。

问题二:

select * from atest where b = 1;
其中where条件中b字段是否可以使用到abc联合索引呢。

问题三:

select * from atest where c = 1;
其中where条件中c字段是否可以使用到abc联合索引呢。

前三个问题答案如下:

问题四:

select * from atest where a = 1 and b = 2 and c = 3;
其中where条件中a、b、c字段是否可以使用到abc联合索引呢。

问题五:

select * from atest where c = 1 and b = 2 and a = 3;
其中where条件中c、b、a字段是否可以使用到abc联合索引呢。

问题六:

select * from atest where c = 1 and a = 2 and b = 3;
其中where条件中c、a、b字段是否可以使用到abc联合索引呢。

问题七:

select * from atest where a = 1 and c = 2 and b = 3;
其中where条件中a、c、b字段是否可以使用到abc联合索引呢。

问题八:

select * from atest where b = 1 and a = 2 and c = 3;
其中where条件中a、c、b字段是否可以使用到abc联合索引呢。

答案:

为什么会出现上述几种呢?既然我们做技术的,就要搞明白MySQL联合索引原理。下次碰到类似的情况就不会懵逼了。

点击量:18

发表评论

电子邮件地址不会被公开。 必填项已用*标注