SQL优化-从慢查询到执行计划

SQL 优化:从慢查询到执行计划

文章目录

先别急着改 SQL

很多人一看到慢查询就开始"拍脑袋优化",其实第一步应该是看执行计划。EXPLAIN 能告诉你这条 SQL 到底走了什么索引、扫了多少行、有没有临时表、有没有文件排序。

先看什么字段

通常重点看这几个:

  • type:访问类型,越接近索引扫描越好
  • key:最终用到了哪个索引
  • rows:预估扫描行数
  • extra:有没有 Using filesortUsing 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,顺序别反了。