如何查看MySQL 的执行计划?
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 | 访问的表 | 显示这一步访问的是哪个表,有时是衍生表(如 <derived2> )。 |
partitions | 匹配的分区 | 如果表定义了分区,这里显示命中了哪些分区。 |
type | 访问类型 | 极其重要!表示如何查找数据,从好到坏:system > const > eq_re |