Explain执行器名词解释

Explain作用及使用

  • 作用

    复杂sql语句的读取顺序
    sql中有哪些索引可以使用
    sql中哪些索引被实际使用
    表之间的引用
    每张表有多少行被优化器查询
    
  • 使用方法

    EXPLAIN + 查询sql
    如:EXPLAIN SELECT * FROM test_index; 
    
  • 基本字段解读

idselect_typetablepartitionstypepossible_keyskeykey_lenrefrowsfilteredExtra
1SIMPLEtest_indexNULLindexNULLindex_abc3069NULL9100Using index
编号查询类型匹配的分区类型可用索引实际使用索引实际索引长度表之间引用行数按表条件过滤的行百分比执行情况描述

Explain字段详解

id

select查询的序列号,并不是单纯的从上到下或者从下向上执行,共有三种情况
 - id相同:按照从上到下的顺序执行
 - id不同:按照id值由大到小的顺序执行
 - id既有相同又有不同:先执行id值大的,然后相同值的从上到下执行

select_type

分别用来表示查询的类型,主要是用于区别普通查询、联合查询、子查询等的复杂查询。
值如下:
 - SIMPLE:简单查询,不包含子查询和UNION查询
 - PRIMARY:主查询,如包含子查询的sql中的父查询
 - SUBQUERY:查询sql中的子查询
 - DERIVED:衍生查询(在from列表中的子查询,Mysql递归这些子查询,结果放到临时表中)
 - UNION:联合查询,t1 UNION t2 中的t2
 - UNION RESULT:从UNION表获取结果的SELECT

table

一般指查询的表,对于带尖括号的,表示select_type + id的指向。

partitions

如果查询是基于分区表的话,会显示查询将访问的分区。

type

type所显示的是查询使用了哪种类型
查询速度:null > syetem > const > eq_ref > ref > range > index > all
 - null:甚至不需要访问索引表,例如主键作为条件超过当前表主键最大值;
 - system:const的特殊情况,只有一条数据的系统表
 - const:使用唯一索引等价查询,仅能匹配到一条数据
 - eq_ref:使用唯一索引作为关联条件,匹配多条不重复数据
 - ref:普通索引等价
 - range:检索给定范围的索引 , > 、< 、>= 、<=、between and
 - index:仅查询索引表
 - all:遍历全表以找到匹配的行

possible_keys

显示可能应用在这张表中的索引,一个或多个。查询涉及到的字段上若存在索引,则该索引将被列出,但不一定被查询实际使用

key

查询中实际使用到的索引,小于等于possible_keys

key_len

表示索引中使用的字节数,可通过该列计算查询中使用的索引的长度,在不损失精确性的情况下,长度越短越好。
key_len显示的值为索引字段的最大可能长度,并非实际使用长度,即key_len是根据表定义计算而得,不是通过表内检索出的。

ref

表示查询中的连接匹配条件,即哪些列或常量被用于查找索引列上的值

rows

根据表统计信息及索引选用情况,大致估算出找到所需的记录所需要读取的行数,也就是说,用的越少越好 

filtered

按表条件过滤的行百分比

Extra

查询结果的备注信息,很重要
Using index:性能提升,索引覆盖,此查询仅查询索引不需要回表查询
Using where:该查询中使用了where条件过滤
Using index, Using where:双条件,表明索引被用来执行索引键值的查找
Using filesort:性能消耗大,需要额外一次排序(查询)
Using temporary:性能消耗大,用到临时表,常见于order by和group by
Using join buffer	连接缓存
impossible where:where子句的值总是false,不能用来获取任何元组
distinct:优化distinct操作,在找到第一匹配的元组后即停止找同样值的动作
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值