SQL 查询优化速查笔记

一、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 实战数据分析:处理上万行数据不卡顿


数据分析,一起努力。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容