数据库执行计划字段意义详解
数据库执行计划(Execution Plan)是数据库优化器生成的关于如何执行SQL查询的详细步骤说明。以下是执行计划中常见字段及其意义:
核心字段
-
id:执行顺序标识符
- 数字越大越先执行
- 相同id表示同一执行层级,从上往下执行
-
select_type:查询类型
- SIMPLE:简单SELECT查询(不含子查询或UNION)
- PRIMARY:主查询或外层查询
- SUBQUERY:子查询
- DERIVED:派生表(FROM子句中的子查询)
- UNION:UNION中的第二个或后续查询
- UNION RESULT:UNION的结果
-
table:访问的表名
- 可能是实际表名、别名或派生表名
-
type:访问类型(从优到差排序)
- system:表只有一行数据
- const:通过主键或唯一索引访问
- eq_ref:关联查询中使用的索引是主键或唯一索引
- ref:非唯一索引查找
- range:索引范围扫描
- index:全索引扫描
- ALL:全表扫描
-
possible_keys:可能使用的索引
- 查询可能使用的索引列表
-
key:实际使用的索引
- 查询优化器最终选择的索引
-
key_len:使用的索引长度
- 表示索引中使用的字节数
-
ref:索引的哪一列被使用
- 显示索引查找所用的列或常量
-
rows:预估需要检查的行数
- 优化器估算的需要扫描的行数
-
filtered:过滤百分比
- 表示存储引擎返回的数据在server层过滤后剩余的比例
-
Extra:额外信息
- Using index:使用覆盖索引
- Using where:使用WHERE条件过滤
- Using temporary:使用临时表
- Using filesort:使用文件排序
- Using join buffer:使用连接缓冲
不同数据库的特殊字段
MySQL特有
- partitions:匹配的分区
- filtered:表条件过滤的行百分比
Oracle特有
- Operation:执行的操作
- Object Name:操作对象名
- Cost:执行成本
- Cardinality:返回行数估计值
- Bytes:返回数据字节数估计值
SQL Server特有
- EstimateRows:估计行数
- EstimateIO:估计I/O成本
- EstimateCPU:估计CPU成本
- TotalSubtreeCost:总成本
理解这些字段对于分析查询性能、识别瓶颈和优化SQL语句至关重要。
1189

被折叠的 条评论
为什么被折叠?



