SQLPathLab
索引 · 高级

EXPLAIN

查看查询执行计划

简介

EXPLAIN 展示优化器计划如何访问表、选择索引、连接和排序,但普通 EXPLAIN 不会证明真实耗时。阅读时先确认访问类型、使用的键、预计行数和额外操作,再用接近生产的数据分布复测;计划变化也不自动等于性能改善。

基础语法

EXPLAIN SELECT * FROM orders WHERE department = 'Sales';

示例

EXPLAIN 示例

示例查看 department 条件的访问计划;页面结果是便于学习的摘要,实际判断必须读取目标 MySQL 的原生 EXPLAIN。

示例数据表

表名:orders
orders
idcustomer_idproduct_idnamedepartmentamountstatuscreated_atdiscount
1 101 201 Alice Sales 1200 paid 2026-01-03 0
2 102 202 Bob IT 900 pending 2026-01-08 50
3 101 201 Cindy Sales 1500 paid 2026-02-02 100
4 104 203 David HR 700 cancelled 2026-02-15 0

运行结果

query_plan_summary
步骤对象访问方式说明注意事项
1 orders 顺序扫描 顺序读取 orders 并应用查询条件。 下表是帮助理解访问方式的概念摘要,不是 MySQL EXPLAIN 的原始列;索引选择、成本和预计行数应以目标 MySQL 环境的实际计划为准。

常见问题

EXPLAIN 会真正执行查询吗?

普通 EXPLAIN 通常只生成计划;EXPLAIN ANALYZE 会实际执行并收集运行数据,不能对写入语句或高成本查询随意使用。

阅读执行计划先看哪些信息?

先看访问类型、预计扫描行数、使用的索引、连接顺序以及是否出现临时表或额外排序。

执行计划变好是否就证明查询更快?

不能。估算计划只是线索;应在接近生产的数据量上比较实际耗时、读取行数与结果一致性。

标签

常用索引

这篇内容是否清楚?