CS-Notes 学习笔记
Java 后端 · MySQL

线上出现慢 SQL,怎样排查和优化?

先自己想一想,再看参考要点

参考要点

  • 找出:开启慢查询日志,long_query_time 线上调到 1 秒或更低,对比 Rows_examined 和 Rows_sent,用 mysqldumpslow 或 sys.statement_analysis 按语句归类
  • 分析:用 EXPLAIN 和 EXPLAIN ANALYZE 看执行计划,常见原因有索引失效、回表太多、filesort 和临时表、连接列没有索引、等锁(Lock_time 大)、统计信息不准
  • 修改:建合适的索引或改写语句,再对比执行计划和耗时,例如加覆盖索引后从 237 ms 降到 20 ms
在学习站中自测这道题看这道题所在的一天

学习站:先用面试题自评定级,按水平和面试日期排出每天的计划,自评过的题按间隔复习。免费、无需注册,记录只保存在自己的浏览器中。