mysql判断域为空_MySQL EXPLAIN 字段说明

id

查询或关联查询的顺序。

如果没有子查询且只有一个查询,则为一个常数 1,表示第一步;

如果有子查询,则子查询为 1,父查询为 2;

相同的 id 查询顺序为自上而下;

如果有子查询,不同 id 值越大越先被执行;

NULL 为最后一步执行。

select_type

查询类型。simple

查询中不包含子查询或者 UNION。

primary

查询中若包含任何复杂的子部分,最外层查询被标记为 primary。

subquery

在 SELECT 或 WHERE 列表中包含的子查询。

derived

在 FROM 列表中包含的子查询。

MySql 会递归执行这些子查询并将结果存放在临时表中。

union

若第二个 SELECT 出现在 UNION 之后则被标记为 union。

若 UNION 出现在 FROM 中的子句,外层 SELECT 被标记为 derived。

union result

从 UNION 表中获取结果的 SELECT。

dependent union

SELECT 依赖于外层 union 查询中发现的数据。

dependent subquery

SELECT 依赖于外层 subquery 查询中发现的数据。

uncacheable subquery

subquery 的 SELECT 中某些特性阻止结果被缓存。

uncacheable union

union 的 SELECT 中某些特性阻止结果被缓存。

table

表名。

type

数据访问、数据操作的类型。一般优化到 range 或 ref 级别。以下类型按性能由高到低列出。system

全表只有一行数据。

const

只有一条符合的数据,如主键、唯一索引等。

eq_ref

唯一性索引扫描。多表关联查询中,查询主表中只有一条符合数据,如:SELECT * FROM t1 JOIN t2 ON t1.id = t2.id; 其中 t1 表的 id 为主键或唯一索引。

ref

非唯一性索引(普通索引)扫描。返回匹配某个单独值的所有行。

fulltext

全文索引。

ref_or_null

类似 ref,不同的是在检索的时候会额外搜索包含 NULL 值的记录。

index_merge

查询中使用多个索引。

unique_subquery

类似 eq_ref,不同的是用于 WHERE IN 语句。

index_subquery

类似 unique_subquery,不同的是用于非唯一索引。

range

只检索给定范围的行,使用一个索引来选择行,=、<>、>、>=、

index

全索引扫描。

all

全表扫描。

possible_keys

显示可能有利于高效的查询的索引。

查询的字段若存在索引,则该索引被列出,但不一定被被实际查询使用到。

key

实际使用的索引。

如果为 NULL 则没有使用索引。

key_len

所选索引的字节长度。

显示的值为索引字段的最大可能长度,并非实际使用的长度。

在相同的查询结果下条件精度越低越好,条件越少 key_len 越小。

ref

显示与 key 一起选择行时使用的列或常数。const

常量等值查询。

NULL

无,如 >。

具体的某一列

关联查询中被 JOIN 的哪个表中 ON 相关的字段。

func

条件时用来表达式、函数或条件列发生了内部隐式转换,

rows

扫描的行数。越少越好。

Extra

执行查询过程中对查询计划的重要补充信息。

更多详情参阅:https://dev.mysql.com/doc/refman/5.7/en/explain-output.htmlUsing filesort

使用了文件排序。

排序无法使用到索引时会出现,常见于 ORDER BY 和 GROUP BY 语句中。

对复合索引中字段 GROUP BY 时一般要将字段之前的字段按序加入分组条件中。

Using temporary

需要使用临时表存储结果集。

常见于 ORDER BY 和 GROUP BY 语句。

Using index

使用了覆盖索引。

查询时无需访问表的数据行,通过索引就可获取查询数据,即查询的列要被所建索引覆盖。

如果同时出现了 Using where 表明索引用来执行索引键值查找;

如果没有同时出现 Using where 表明索引用来读取数据而非执行查找。

distinct

优化 distinct 操作,在找到第一匹配元组之后即停止找相同值的动作。

Using where

使用了 WHERE 过滤。

Using join buffer

使用了 JOIN 缓存。

impossible where

WHERE 子句的值总是 false,不能用来获取任何数据。

select tables optimized away

在没有 GROUP BY 子句的情况下,基于索引优化 MIN() / MAX() 操作或对于 MyISAM 存储引擎优化 COUNT(*) 操作,不必等到执行阶段再进行计算,操作查询计划生成阶段即完成优化。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值