MySQL 执行计划详解:读懂 Explain,优化 SQL 不求人
执行计划(Explain)是 MySQL 优化的 “导航图”,它能模拟优化器执行 SQL 的过程,展示 MySQL 如何解析和执行你的查询。掌握执行计划的分析方法,是写出高效 SQL 的前提。本文将系统拆解执行计划的每个字段,教你如何通过 Explain 定位性能瓶颈。
执行计划的基本使用
通过EXPLAIN关键字可以生成执行计划,语法简单:
1 | -- 基础用法 |
执行后会生成一张包含 12 个字段的表格,每个字段都隐藏着查询的关键信息:
1 | +----+-------------+-------+------------+------+---------------+------+---------+------+------+----------+-------+ |
执行计划字段详解
1. id:查询执行顺序标识
表示 SELECT 子句或操作表的序号,决定执行顺序。
- id 相同:执行顺序由上至下(按 table 字段顺序)。
例:多表连接查询中,id 相同表示按表的出现顺序依次访问。 - id 不同:id 越大优先级越高,先执行(子查询的 id 通常大于外层查询)。
例:子查询的 id 为 2,外层查询 id 为 1,则先执行子查询。 - id 混合(有相同也有不同):先执行 id 大的,id 相同的按顺序执行。
2. select_type:查询类型
区分普通查询、子查询、联合查询等,核心类型如下:
