MySQL explain有哪些字段?tpye有哪些类型?

KLQ 2020-06-28 15:35:43 java常见问答 3446

java面试的过程当中,很多人应该都遇到和MySQL explain字段相关的问题,你知道MySQL explain有哪些字段吗?tpye都有哪些类型呢?下面一起来看看具体的回答吧!

1、Extra字段

Not exists-在某一些左连接当中,MySQL Query Optimizer通过改变原有Query的组成而使用的优化方法,能够部分减少数据访问次数;

Extra-查询当中每一步实现的额外细节信息;

No tables-Query语句当中使用FROM DUAL或者是不包括任何FROM子句;

Distinct-查找distinct 值。在mysql找到了第一条匹配的结果的时候,将会停止这个值的查询,转为后面其他值查询;

Using where with pushed condition-一个在NDBCluster存储引擎当中出现的信息,一定要通过打开Condition Pushdown 优化功能才可以被使用,控制参数engine_condition_pushdown;

Full scan on NULL key-子查询当中的一种优化方式;

Using where-假如,不读取表的所有数据,又或者不是仅仅通过索引就能够获取所有需要的数据,那么就会出现Using where信息;

Range checked for each record (index map: N)-在MySQL Query Optimizer没有发现好的能够使用的索引的时候,假如,发现前面表的列值已知部分索引可以使用,对前面表的每个行组合,MySQL检查是否能够使用range或者是index_merge访问方法来索取行;

Using temporary-在MySQL的某一些操作当中,一定要使用临时表的时候,在Extra信息当中就会出现Using temporary;

SELECT tables optimized away-在Query当中没有GROUP BY操作的时候,在使用某些聚合函数来访问存在索引的某个字段的时候,MySQL Query Optimizer会通过索引直接一次定位到所需的数据行完成整个查询;

Using index for group-by-数据访问和Using index相同,所需数据只要读取索引,Query中使用GROUP BY或者是DISTINCT子句的时候,假如分组字段也在索引当中,Extra中的信息就会是 Using index for group-by;

Using filesort-Query中含有ORDER BY操作,并且,不能够利用索引完成排序操作时,MySQL Query Optimizer 不得不选择相应的排序算法来实现;

Using index-所需数据只要在Index就能够全部获得,不要再到表中取数据;

2、XPLAIN列

Extra-MYSQL怎样解析查询的额外信息;

table-显示这一行的数据是关于哪张表的;

rows-MYSQL认为一定要检查的用来返回请求数据的行数;

type-列显示连接使用了何种类型;

ref-显示索引的哪一列被使用了,假如,可能的话,会是一个常数;

possible_keys-显示可能应用在这张表中的索引;

key_len-使用索引的长度;

key-实际使用的索引;

3、Type列

unique_subquery-子查询当中的返回结果字段组合是主键或唯一约束;

Type-告诉我们对表使用的访问方式;

system-系统表;

all-全表扫描;

ref_or_null-和ref的唯一区别就是在使用索引引用的查询之外再增加一个空值的查询;

const-读常量;

ref-Join语句当中被驱动表索引引用的查询;

eq_ref-最多的话就只会有一条匹配结果,通常都是通过主键或者是唯一键索引来访问;

rang-索引范围扫描;

fulltext-进行全文索引检索;

index_subquery-子查询当中的返回结果字段组合是一个索引(或者是索引组合),可是,不是一个主键或者是唯一索引;

index-全索引扫描;

index_merge-查询当中同时使用两个(或者是更多)索引,之后,对索引结果进行合并,再读取表数据;

MySQL explain字段的一些知识你都了解了吗?请继续的关注奇Q工具网吧,更多MySQL常见问题可以帮助你解答哦!

推荐阅读:

mysql慢查询是什么?mysql慢查询日志开启详解

mysql数据库建表的完整步骤介绍,mysql怎么建立表?

mysql数据库命令大全,mysql基本命令大全