mysql联合索引是否生效的实际测试

面经经常会有这样一题:对abc建立索引,查询ac时索引是否生效。先说结论:生效
我们来实际验证一下,我使用的Server version: 8.0.23 MySQL Community Server - GPL

搭建环境

  1. 创建表
CREATE TABLE `test` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `aid` varchar(20) NOT NULL DEFAULT '' COMMENT 'aid',
  `bid` varchar(20) NOT NULL DEFAULT '' COMMENT 'bid',
  `cid` varchar(20) NOT NULL DEFAULT '' COMMENT 'cid',
  PRIMARY KEY (`id`),
  KEY `abc` (`aid`,`bid`,`cid`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
  1. 插入一些数据
INSERT INTO test (aid, bid, cid) VALUES ('a7', 'b4', 'c2');
  1. 查看
    这里共插入了14条记录

进行验证

MySQL的explain关键字查看是否使用索引,具体的信息有很多,我不知道看哪个指标,但是看可能的查询行数 row 是比较准确的

最后实验结果汇总:
在建立abc索引的情况下,测试等值、范围、order by。
图中下划线表示范围查询


纠正:图二都可以,有aid就可以

其他资料

  1. mysql 复合索引(联合索引) a b c的使用
  2. 【原创】面试官:谈谈你对mysql联合索引的认识?
posted @ 2022-02-17 16:47  Rogn  阅读(181)  评论(3编辑  收藏  举报