美文网首页
Mysql —— 索引的使用顺序

Mysql —— 索引的使用顺序

作者: 若琳丶 | 来源:发表于2020-02-09 17:48 被阅读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

发现用的是第一个。

结论

  • 会依照索引添加的先后顺序,用最早添加的索引。即使是联合索引也依照这个规则。

相关文章

网友评论

      本文标题:Mysql —— 索引的使用顺序

      本文链接:https://www.haomeiwen.com/subject/ymdnxhtx.html