1. 执行计划解析基础
MySQL执行计划是数据库查询优化的核心工具,它揭示了数据库引擎如何处理SQL语句的内部机制。通过EXPLAIN命令,我们可以获取查询的执行路径、表访问顺序、索引使用情况等关键信息。对于中高级开发者而言,掌握执行计划解读能力,相当于获得了数据库性能调优的X光机。
执行计划输出的常见列包括:
- id:查询标识符,相同id表示同一执行单元
- select_type:查询类型(SIMPLE/PRIMARY/SUBQUERY等)
- table:访问的表名
- partitions:匹配的分区
- type:访问类型(从优到差:system > const > eq_ref > ref > range > index > ALL)
- possible_keys:可能使用的索引
- key:实际使用的索引
- key_len:使用的索引长度
- ref:列与索引的比较
- rows:预估需要检查的行数
- filtered:条件过滤后的行百分比
- Extra:额外信息(Using index/Using temporary等)
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 关键指标深度解读
2.1 访问类型(type)解析
type列是执行计划中最重要的指标之一,它显示了MySQL如何查找表中的行。以下是常见类型的性能对比:
| 类型 | 扫描方式 | 性能 | 触发场景 |
|---|---|---|---|
| system | 系统表单行 | 最优 | 系统表且只有一行 |
| const | 主键/唯一索引等值 | 极优 | WHERE条件使用主键或唯一索引 |
| eq_ref | 关联查询唯一索引 | 优 | JOIN使用主键或唯一索引关联 |
| ref | 非唯一索引等值 | 良 | 普通索引等值查询 |
| range | 索引范围扫描 | 中 | BETWEEN/IN/>/<等范围查询 |
| index | 全索引扫描 | 较差 | 扫描整个索引树 |
| ALL | 全表扫描 | 最差 | 无可用索引 |
实战建议:生产环境应尽量避免出现index和ALL类型,通常需要通过添加合适索引来优化。
2.2 额外信息(Extra)详解
Extra列包含MySQL解决查询的额外信息,
