外观
一句话答案
开启慢日志→explain 分析执行计划→加索引/改写 SQL/覆盖索引避免回表/联合索引避免文件排序。
核心要点
步骤:
slow_query_log=ON, long_query_time=1EXPLAIN看 type(避免ALL) / key(是否走索引) / rows(扫描行数)- 优化:加索引 / 避免 SELECT * / 避免函数操作索引列 / 分页优化
常见优化: 覆盖索引避免回表 / 联合索引避免文件排序 / 子查询改 JOIN
追问与易错
追问方向:
- 你优化过最复杂的 SQL 是什么?
- explain 的 type 哪些需要优化?
- 大表加索引怎么不影响线上?
易错点:
- ❌ 加索引解决所有慢查询——索引过多影响写入
- ❌ 不分析执行计划就盲目加索引
💡 记忆锚点
慢查询优化像看病:先开慢日志记录"病历"(slow_query_log),再用 EXPLAIN 做"CT 扫描"(看 type/key/rows/Extra),然后对症下药——缺索引就加索引,查太多列就覆盖索引避免回表,排序慢就联合索引避免 filesort。切忌不做诊断就盲目加索引。