MySQL 的执行计划(Execution Plan)是 SQL 性能调优的核心工具。它展示了 MySQL 优化器为执行一条 SQL 语句所选择的详细步骤和策略。读懂执行计划,就能定位查询瓶颈,从而进行有效优化。
一、如何获取执行计划?
使用 EXPLAIN 关键字,只需将其加在你的 SQL 语句之前即可。
-- 查看 SELECT 语句的执行计划
EXPLAIN SELECT * FROM employees WHERE last_name = 'Smith';
-- 查看 INSERT/UPDATE/DELETE 语句的执行计划(了解其如何查询数据)
EXPLAIN UPDATE employees SET salary = salary * 1.1 WHERE department_id = 5;
-- MySQL 8.0+ 支持更详细的 ANALYZE 命令,会实际执行语句并统计耗时
EXPLAIN ANALYZE SELECT * FROM employees WHERE last_name = 'Smith';
二、执行计划详解:各字段含义
EXPLAIN 命令的输出包含以下核心字段。理解它们是读懂执行计划的关键。
字段
含义
说明
id
查询序号
标识 SELECT 子句的执行顺序。相同 id 从上到下执行;不同 id,id 值越大优先级越高。
select_type
查询类型
表示查询的复杂度(如简单查询、子查询、联合查询等)。
table
访问的表
显示这一步访问的是哪个表,有时是衍生表(如
partitions
匹配的分区
如果表定义了分区,这里显示命中了哪些分区。
type
访问类型
极其重要!表示如何查找数据,从好到坏:system > const > eq_re