MySQL之explain详解

select_type

SIMPLE

最简单的SELECT查询,没有使用UNION或子查询。

 

PRIMARY

在嵌套的查询中是最外层的SELECT语句,在UNION查询中是最前面的SELECT语句。

 

UNION

UNION中第二个以及后面的SELECT语句。

 

DERIVED

派生表SELECT语句中FROM子句中的SELECT语句。

 

UNION RESULT

一个UNION查询的结果。

 

DEPENDENT UNION

顾名思义,首先需要满足UNION的条件,及UNION中第二个以及后面的SELECT语句,同时该语句依赖外部的查询。

type

type是用来说明MySQL是如何访问表的,有没有使用索引,如何使用索引等信息。

    type包含System,const,eq_ref,ref,range,index,all

const
     当确定最多只会有一行匹配的时候,MySQL优化器会在查询前读取它而且只读取一次,因此非常快。const只会用在将常量和主键或唯一索引进行相等判断时,而且是比较所有的索引字段。联合索引的最左匹配原则不适用于此,主键上的范围查询不适用。


system

这是const连接类型的一种特例,表仅有一行满足条件

select * from table where id = 1;

eq_ref

eq_ref类型是除了const外最好的连接类型,它用在一个索引的所有部分被联接使用并且索引是UNIQUE或PRIMARY KEY,此时,如果索引是PK,那么type就是const。

需要注意InnoDB和MyISAM引擎在这一点上有点差别。InnoDB当数据量比较小的情况优化器会放弃查询索引,这样可以减少一次回表操作,type会是All。

ref

这是一种索引查找,它返回匹配某个特定值的所有行,可能会找到多个符合条件的行,因此,它是索引查找和扫描的混合体,该索引访问的发生的条件是,只有当使用非唯一索引,或者唯一索引的非最左匹配,称之为ref的原因是要跟某个值参考比较。这个参考值或者是一个常数,或者是来自多表查询前一个表的结果值。

range

范围查询






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值