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

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

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

阅读 27.9k
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条件过滤,这种情况也不回表。

推荐问题