select a,d 为什么不直接走聚集索引?而是全表扫描【innodb引擎】
表里有字段 a,b,c,d
现有联合索引(a,b,c),唯一索引 (d)
select a,d frm student;
explain 查看执行计划,type=all
这是因为觉得直接通过聚集索引去获取a,d的字段比较繁琐,直接用全表扫描去获取吗?
跟select * from student 一样的原理吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
走不走索引主要看 where 涉及的字段,不是看 select 涉及的字段
如果你直接
select d from student
,那么会走索引,我们知道Mysql的索引是B+ tree,索引中包含了d的字段,所以可以直接从索引中获取d字段。但是当你加了a字段后,一种方式是把所以的d字段对应的主键去扫表,第二种方式直接去扫全表。
对比后,Mysql肯定会选择第二种方式更加的高效。