为了账号安全,请及时绑定邮箱和手机立即绑定

mysql的innodb,通过聚集索引查询是否不管怎么样都是索引覆盖?

mysql的innodb,通过聚集索引查询是否不管怎么样都是索引覆盖?

侃侃尔雅 2019-05-21 15:57:03
我用的是innodb,表上只有一个主键且是聚集索引(默认是聚集索引了),我的查询语句,where条件是这个主键,但是查询列是任意的,发现执行计划的extra并不是usingindex,按理来说,聚集索引的叶子节点的data域存放的是整行的数据,那不管我查询列是什么,只要where条件是主键,都可以从聚集索引中拿到吧。但是结果就是只有当查询列是主键的时候,才会usingindex,不然extra就是空再多问一句,innodb支持联合聚集索引吗?
查看完整描述

2 回答

?
慕后森

TA贡献1802条经验 获得超5个赞

如果索引包含所有满足查询需要的数据的索引则成为覆盖索引,也就是平时所说的不需要回表操作,即索引的叶子节点上面包含了他们查找的数据(hash索引不可以)。你的任意列有的不在索引节点上,就不会成为覆盖索引。
判断标准:使用explain,可以通过输出的extra列来判断,对于一个索引覆盖查询,显示为usingindex,MySQL查询优化器在执行查询前会决定是否有索引覆盖查询。
                            
查看完整回答
反对 回复 2019-05-21
  • 2 回答
  • 0 关注
  • 400 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号