mysql联合索引是否生效的实际测试
面经经常会有这样一题:对abc建立索引,查询ac时索引是否生效。先说结论:生效
我们来实际验证一下,我使用的Server version: 8.0.23 MySQL Community Server - GPL
搭建环境
- 创建表
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;
- 插入一些数据
INSERT INTO test (aid, bid, cid) VALUES ('a7', 'b4', 'c2');
- 查看
这里共插入了14条记录
进行验证
MySQL的explain关键字查看是否使用索引,具体的信息有很多,我不知道看哪个指标,但是看可能的查询行数 row 是比较准确的
最后实验结果汇总:
在建立abc索引的情况下,测试等值、范围、order by。
图中下划线表示范围查询
纠正:图二都可以,有aid就可以
其他资料
个性签名:时间会解决一切