如何排查和优化慢 SQL?
发布于
一、排查步骤
- 开启慢查询日志:
slow_query_log = ON,long_query_time = 1。 - 用
explain分析执行计划,关注 type、key、rows、Extra。 - 用
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(需优化)。