如何排查和优化慢 SQL?

发布于

一、排查步骤

  1. 开启慢查询日志:slow_query_log = ON,long_query_time = 1。
  2. 用 explain 分析执行计划,关注 type、key、rows、Extra。
  3. 用 show profile 看各阶段耗时。

二、常见优化

  • 索引:给 where、join、order by 字段加合适索引,避免索引失效(函数、隐式转换、%前缀 like)。
  • 查询:避免 select *,用 limit 分页,减少回表(覆盖索引)。
  • 表结构:大表分表,冷热数据分离。
  • 锁:减少长事务,避免锁等待。

三、explain 重点

  • type:system > const > eq_ref > ref > range > index > ALL,至少要 range。
  • key:实际用到的索引。
  • Extra:Using index(覆盖索引,好);Using filesort / Using temporary(需优化)。