SQL 查询优化速查笔记

2025-07-14  本文已影响0人  AureSong

一、EXPLAIN 是什么

EXPLAIN 是 SQL 查询的“体检工具”,能告诉我们:

· 数据库执行查询的顺序

· 是否走了索引

· 扫描了多少数据行

· 有没有全表扫描或临时表

二、EXPLAIN 输出重点字段

table:被访问的表

type:访问方式,性能好坏关键指标

rows:预计扫描的行数,越小越好

key:实际使用的索引

Extra:是否排序/临时表等提示

type 值性能从差到好:ALL > index > range > ref > eq_ref > const

如果是ALL,几乎就是全表扫描,要优化!

三、常见优化建议(写查询时可对照)

WHERE 子句:为筛选字段添加索引(如:订单号、客户ID)

JOIN 联接:JOIN 的字段要建立索引,避免全表比对

SELECT 列:避免 SELECT *,只查需要的列

计数优化:COUNT(*) 可用索引覆盖或缓存方案优化

ORDER BY:尽量使用索引字段排序,避免临时表 + filesort

LIMIT 分页:LIMIT 1000 OFFSET 1000 慎用,建议使用主键过滤或子查询代替

四、创建索引语法备忘

单字段索引:

CREATE INDEX idx_customer_id ON Customers(cust_id);

联合索引(最左前缀原则)

CREATE INDEX idx_orderitems_orderprod ON OrderItems(order_num, prod_id);

有顺序要求的联合索引,一定要按最左字段过滤才能生效。

五、优化流程建议

1 写出原始查询

2 用 EXPLAIN 检查执行计划

3 判断是否有全表扫描(type = ALL)

4 发现未使用索引 → 创建或调整索引

5 再次 EXPLAIN 验证优化效果

推荐使用场景

1 面试前冲刺:提升 SQL 技术含金量

2 自学巩固:把查询写“对”也写“快”

3 实战数据分析:处理上万行数据不卡顿

数据分析,一起努力。

上一篇 下一篇

猜你喜欢

热点阅读