Mysql —— 索引的使用顺序

2020-02-09  本文已影响0人  若琳丶

demo table

创建表

create table test(
   id int,
   v1 int,
   v2 int,
   primary key(id))
Engine=InnoDB DEFAULT CHARSET=UTF8;

该表的记录如下:


image.png

问题一:如果一条sql同时命中两个索引,那实际会用几个索引?

添加两个索引:

ALTER TABLE test
ADD INDEX idx_v1 (v1) USING BTREE ,
ADD INDEX idx_v1_v2 (v1, v2) USING BTREE ;

通过 explain 来查看:


image.png

会命中两条索引,但实际只用了 idx_v1,即使实际查询用联合索引更好,也依然只用了 idx_v1。

问题二:如果命中两个索引,到底会用哪一个?

之前的测试,发现用的是第一个,我们删除索引,把之前的索引语句顺序换一下:

ALTER TABLE test
ADD INDEX idx_v1_v2 (v1, v2) USING BTREE,
ADD INDEX idx_v1 (v1) USING BTREE ;

image.png

发现用的是第一个。

结论

上一篇 下一篇

猜你喜欢

热点阅读