select a,d 为什么不直接走聚集索引?而是全表扫描【innodb引擎】

发布于 2022-09-12 22:05:46 字数 191 浏览 37 评论 0

表里有字段 a,b,c,d

现有联合索引(a,b,c),唯一索引 (d)

select a,d frm student;
explain 查看执行计划,type=all

这是因为觉得直接通过聚集索引去获取a,d的字段比较繁琐,直接用全表扫描去获取吗?

跟select * from student 一样的原理吗?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

病女 2022-09-19 22:05:46

走不走索引主要看 where 涉及的字段,不是看 select 涉及的字段

抱着落日 2022-09-19 22:05:46

如果你直接 select d from student,那么会走索引,我们知道Mysql的索引是B+ tree,索引中包含了d的字段,所以可以直接从索引中获取d字段。
但是当你加了a字段后,一种方式是把所以的d字段对应的主键去扫表,第二种方式直接去扫全表。
对比后,Mysql肯定会选择第二种方式更加的高效。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文