MySQL中的回表查询,我的理解是二级索引无法直接查询所有列的数据,所以通过二级索引查询到聚簇索引后,再查询到想要的数据,这种通过二级索引查询出来的过程,就叫做回表。
这样理解对吗?
如果explain查看执行计划,在Extra中看到了Using where,是否表示是通过回表查询到的数据?
MySQL中的回表查询,我的理解是二级索引无法直接查询所有列的数据,所以通过二级索引查询到聚簇索引后,再查询到想要的数据,这种通过二级索引查询出来的过程,就叫做回表。
这样理解对吗?
如果explain查看执行计划,在Extra中看到了Using where,是否表示是通过回表查询到的数据?
大概意思对,但不精确。
1、我理解不存在“通过二级索引查询到聚簇索引”的过程,二级索引中保存有表主键(如果没有主键mysql会自动生成一个rowid),回表指的是通过主键查询表的某一行。
2、Extra中看到了Using where,代表是按照where条件进行了过滤,和是否走索引、回表无必然的关系。
只有在使用了索引,且Extra是Using where的情况下,才代表回表查询数据。
还有一种情况,Extra中是using index & using where,表示select的数据在索引中能找到,但需要根据where条件过滤,这种情况也不回表。
5 回答1.5k 阅读
2 回答2.2k 阅读
3 回答748 阅读✓ 已解决
1 回答1k 阅读
1 回答687 阅读✓ 已解决
1 回答991 阅读
1 回答863 阅读
对
但不是出现using where就是回表,using where只是过滤
如果出现using index condition就是二级索引回表