一、覆盖索引是什么?——直击本质我们可以将索引比作书籍目录:普通索引只告诉你内容在哪一页,需要翻页才能看到内容;而覆盖索引的目录里,直接存放了你需要的全部内容,无需翻书。MySQL官方定义当一条SQL所需的所有字段(WHERE查询字段、SELECT返回字段、ORDER BY/GROUP BY排序分组字段)全部存在于某个索引中时,MySQL仅通过扫描索引即可完成查询,无需访问原始数据表,这种索引即为覆盖索引。简单一句话:查什么、索引里就有什么,不走回表。示例演示假设用户表:user(id, name, age, gender),id为主键聚集索引。执行SQL:SELECT name, age FROM user WHERE gender = 'male';若建立联合索引:idx_gender_name_age(gender, name, age)此时查询条件、返回字段全部包含在索引中,MySQL只扫描索引即可拿到全部数据,这就是标准的覆盖索引。二、底层原理:覆盖索引为何高效?覆盖索引的性能优势,建立在InnoDB索引结构 + 回表机制之上。弄懂回表,你就懂了覆盖索引。