MySQL的回表查询,是什么意思?

MySQL中的回表查询,我的理解是二级索引无法直接查询所有列的数据,所以通过二级索引查询到聚簇索引后,再查询到想要的数据,这种通过二级索引查询出来的过程,就叫做回表。
这样理解对吗?

如果explain查看执行计划,在Extra中看到了Using where,是否表示是通过回表查询到的数据?

阅读 27.8k
3 个回答


但不是出现using where就是回表,using where只是过滤
如果出现using index condition就是二级索引回表

大概意思对,但不精确。

1、我理解不存在“通过二级索引查询到聚簇索引”的过程,二级索引中保存有表主键(如果没有主键mysql会自动生成一个rowid),回表指的是通过主键查询表的某一行。

2、Extra中看到了Using where,代表是按照where条件进行了过滤,和是否走索引、回表无必然的关系。
只有在使用了索引,且Extra是Using where的情况下,才代表回表查询数据。
还有一种情况,Extra中是using index & using where,表示select的数据在索引中能找到,但需要根据where条件过滤,这种情况也不回表。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题