我用的是innodb,表上只有一个主键且是聚集索引(默认是聚集索引了),我的查询语句,where条件是这个主键,但是查询列是任意的,发现执行计划的extra并不是usingindex,按理来说,聚集索引的叶子节点的data域存放的是整行的数据,那不管我查询列是什么,只要where条件是主键,都可以从聚集索引中拿到吧。但是结果就是只有当查询列是主键的时候,才会usingindex,不然extra就是空再多问一句,innodb支持联合聚集索引吗?
2 回答
慕后森
TA贡献1802条经验 获得超5个赞
如果索引包含所有满足查询需要的数据的索引则成为覆盖索引,也就是平时所说的不需要回表操作,即索引的叶子节点上面包含了他们查找的数据(hash索引不可以)。你的任意列有的不在索引节点上,就不会成为覆盖索引。判断标准:使用explain,可以通过输出的extra列来判断,对于一个索引覆盖查询,显示为usingindex,MySQL查询优化器在执行查询前会决定是否有索引覆盖查询。
添加回答
举报
0/150
提交
取消
