SQL 优化:从慢查询到执行计划
文章目录
先别急着改 SQL
很多人一看到慢查询就开始"拍脑袋优化",其实第一步应该是看执行计划。EXPLAIN 能告诉你这条 SQL 到底走了什么索引、扫了多少行、有没有临时表、有没有文件排序。
先看什么字段
通常重点看这几个:
type:访问类型,越接近索引扫描越好key:最终用到了哪个索引rows:预估扫描行数extra:有没有Using filesort、Using temporary
常见优化点
- 能走索引就别全表扫
- 少用
select * - 避免在索引列上做函数、计算、隐式转换
- 分页别用太深的
offset - 联表查询先过滤再 join
一个简单例子
sql
-- 慢
select * from orders where date_format(create_time, '%Y-%m') = '2026-06';
-- 改写
select * from orders
where create_time >= '2026-06-01'
and create_time < '2026-07-01';
经验判断
真正的 SQL 优化不是把语句写得"更高级",而是让数据库少做事。
最后
先看执行计划,再动索引,再改 SQL,顺序别反了。