后端岗位面试题更新 2026-08-05

当数据库表中存在索引时,查询时使用SELECT *与使用SELECT id(或指定列)相比,哪一种情况会发生回表(非聚簇索引查询),为什么?

Moka后端开发专业服务技术原理方案权衡InnoDBMySQL

考察说明

考察对数据库索引结构(聚簇/非聚簇索引)以及回表概念的理解

回答思路

  1. 明确说明回表发生在非聚簇索引查询中,当所需列未被查询叶子节点覆盖时
  2. 区分聚簇索引(如InnoDB主键索引)直接存储数据,不需要回表
  3. 指出SELECT *通常需要回表,而SELECT id若id是索引列且是覆盖索引则可能避免回表
  4. 结合具体索引类型(辅助索引)解释回表触发条件