问答

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

作者:admin 2021-05-07 我要评论

表里有字段 a,b,c,d 现有联合索引(a,b,c),唯一索引 (d) select a,d frm student; explain 查看执行计划,type=all 这是因为觉得直接通过聚集索引去获取a,d...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)

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

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

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

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

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

###

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

###

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

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • select a,d 为什么不直接走聚集索引?

    select a,d 为什么不直接走聚集索引?

  • vue中怎么用闭包实现方法重载?

    vue中怎么用闭包实现方法重载?

  • mysql5.6.28 全文检索,中文问题

    mysql5.6.28 全文检索,中文问题

  • contenteditable 的一些问题

    contenteditable 的一些问题

腾讯云代理商
海外云服务器