MySQL的explain中的参数

1、id

每个被独立执行的操作的标识,表示对象被操作的顺序;id值大,先被执行;如果相同,执行顺序从上到下。

若没有子查询和联合查询,id则都是1。Mysql会按照id从大到小的顺序执行query,在id相同的情况下,则从上到下执行。

2、select_type

查询中每个select子句的类型

(1)SIMPLE  

(2)PRIMARY/UNION

(3)DEPENDENT UNION/UNIOIN RESULT  

(4)SUBQUERY/DEPENDENT SUBQUERY

(5)DERIVED/MATERIALIZED

(6)UNCACHEABLE SUBQUERY/UNCACHEABLE UNION

3、table

名字,被操作的对象名称,通常是表名,或者表的别名,或者一个为查询产生临时表的标示符(如派生表、子查询、集合)。

4、type

代表查询执行计划中表使用的连接方式。

连接操作类型及级别:

system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL

一般来说,得保证查询至少达到range级别,最好能达到ref。

5、partitions

匹配的分区信息(对于非分区表值为NULL)。

6、possible_keys

备选的索引(列出可能被使用到的索引)

7、key

经优化器选定的索引;常用ANALYZE TABLE命令,可以使优化器正确地选择索引。如果没有选择索引,键是NULL。要想强制MySQL使用或忽视possible_keys列中的索引,在查询中使用FORCE INDEX、USE INDEX或者IGNORE INDEX。

8、key_len

被优化器选定的索引键的长度,单位是字节。

9、ref

表示本行被操作的对象的参照对象(被参照的对象可能是一个常量用const表示,也可能是其他表的key指向的对象)。

10、rows

查询执行所扫描的元组个数(对于InnoDB,此值是估计值)。

11、filtered

按照条件表上数据被过滤的元组个数的百分比,rows×filtered/100可以求出过滤后的元组数即实际的元组数。

12、Extra

(1)using where

(2)using temporary 

(3)using filesort  

(4)using index 

(5)using join buffer

(6)impossible where

(7)select tables optimized away  

(8)distinct

### MySQL EXPLAIN 命令参数详解 #### 输出字段意义 当使用 `EXPLAIN` 分析查询时,会得到一系列列作为输出。每一列表达了关于查询执行的不同方面。 - **id**: 查询中每个 SELECT 的标识符。如果存在子查询,则外层查询有一个 id, 子查询也有自己的 id[^1]。 - **select_type**: 表明查询的类型,例如 SIMPLE (简单查询), PRIMARY (最外层查询), 或者 SUBQUERY (子查询)[^1]。 - **table**: 显示这一行的数据是关于哪张表的信息。 - **partitions**: 如果涉及分区表的话,显示匹配的分区。 - **type**: 这一列指出了关联操作的类型,它越靠左越好。常见的值有 ALL、index、range、ref、eq_ref 和 const 等等[^2]。 - **possible_keys**: 列出可能应用到该表上的索引。如果为空表示没有任何可用的索引。 - **key**: 实际使用的键(索引),如果没有则为 NULL。 - **key_len**: 被选中的索引长度。在某些情况下可以帮助判断联合索引是否被完全利用。 - **ref**: 显示的是上述 key 字段记录集应与之相比较的内容,比如常量(constant)或其他表里的某个字段(column)。 - **rows**: 预估需要读取多少行来完成这个查询。通常来说数值越低越好。 - **filtered**: 经过存储引擎返回给服务器端之后再经过 WHERE 条件过滤掉的比例百分比。 - **Extra**: 提供额外信息帮助理解查询过程,如 Using where; Using index; Using temporary; Using filesort 等提示词。 ```sql -- 示例 SQL 语句配合 EXPLAIN 使用 EXPLAIN SELECT * FROM orders WHERE order_date >= '2023-01-01'; ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值