回表了解么

当使用非聚簇索引进行查询时,MySQL需要先通过非聚簇索引找到主键值,
然后再根据主键值回到聚簇索引中查找完整数据行,这个过程称为回表。

回表的代价是什么?

回表通常需要访问额外的数据页,如果数据不在内存中,还需要从磁盘读取,增加I/O开销。

可通过覆盖索引或联合索引来避免回表。

什么情况下会触发回表?

  1. 当查询字段不在非聚簇索引中时, 必须回表到主键索引获取数据。
  2. 查询字段包含非索引列(如select * ),必然触发回表。

回表记录越多好吗?
回表记录越多,通常代表性能越差,因为每条记录都需要通过主键再查询一次完整数据。
这个过程涉及内存访问或磁盘IO,尤其当缓存命中率不高时,回表会严重影响查询效率。

posted @ 2025-05-27 16:28  kuki'  阅读(27)  评论(0)    收藏  举报