Skip to content
进阶

一句话答案

开启慢日志→explain 分析执行计划→加索引/改写 SQL/覆盖索引避免回表/联合索引避免文件排序。

核心要点

步骤:

  1. slow_query_log=ON, long_query_time=1
  2. EXPLAIN 看 type(避免ALL) / key(是否走索引) / rows(扫描行数)
  3. 优化:加索引 / 避免 SELECT * / 避免函数操作索引列 / 分页优化

常见优化: 覆盖索引避免回表 / 联合索引避免文件排序 / 子查询改 JOIN

追问与易错

追问方向:

  • 你优化过最复杂的 SQL 是什么?
  • explain 的 type 哪些需要优化?
  • 大表加索引怎么不影响线上?

易错点:

  • ❌ 加索引解决所有慢查询——索引过多影响写入
  • ❌ 不分析执行计划就盲目加索引

💡 记忆锚点

慢查询优化像看病:先开慢日志记录"病历"(slow_query_log),再用 EXPLAIN 做"CT 扫描"(看 type/key/rows/Extra),然后对症下药——缺索引就加索引,查太多列就覆盖索引避免回表,排序慢就联合索引避免 filesort。切忌不做诊断就盲目加索引。