SpringBoot + MySQL 覆盖索引优化:回表查询拖慢接口?联合索引 + 延迟关联实战
一、问题背景:电商列表接口的性能瓶颈 某电商平台的商品列表接口响应时间突然从 100ms 飙升至 3 秒,用户体验急剧下降。排查发现: 慢查询日志:商品列表查询耗时超过 2.8 秒 EXPLAIN 分析:Extra 列显示 Using where; Using filesort 执行计划:虽然命中了索引,但存在大量回表操作 根因分析: 原始 SQL: SELECT id, name, price, category, status, created_at FROM products WHERE category = 'electronics' AND status = 1 ORDER BY created_at DESC LIMIT 10; 这条看似简单的查询存在两个严重问题: 回表查询:索引只包含 category 和 status,查询其他字段需要回到主键索引查找 文件排序:ORDER BY created_at 无法利用索引,导致额外的排序开销 二、核心概念:理解覆盖索引与回表 2.1 索引结构与回表机制 InnoDB 索引结构示意: ┌───────────────....