mysql explain oracle_mysql 中 sql语句 explain(一)

参考:http://www.2cto.com/database/201307/230048.html

http://blog.csdn.net/zhuxineli/article/details/14455029

explain是用来分析mysql如何使用索引来处理select语句和连接表。可以帮助选择更好的索引和写出更优化的查询语句。

1. id

语句的履行顺序标识。是指select语句履行的顺序

2、select_type:

2.1、simple

简单类型,只要语句中没有子查询或union。

EXPLAIN SELECT * FROM `fm_company`

2.2 primary

最外面的select,在有子查询的语句中,最外面的select查询就是primary。查询关键字和主键无关

EXPLAIN SELECT * FROM `fm_company` AS t1 WHERE orgId IN(SELECT orgId FROM fm_company AS t2 WHERE t2.`id` = 1)

4cc15ded9acb39c2cb1c4911237c823d.png

2.3  union

union语句的后面那个 select 履行履行语句。

EXPLAIN SELECT * FROM `fm_company` AS t1

UNION

SELECT * FROM `fm_company` AS t2

2.4 dependent subquery

子查询中内层中第1个select语句。

EXPLAIN SELECT * FROM `fm_company` AS t1 WHERE orgId IN(SELECT orgId FROM fm_company AS sub_t1 WHERE sub_t1.`id` = 148)

2.5、devived

派生表(中间表)的查询语句

EXPLAIN SELECT * FROM (

SELECT * FROM `fm_company` AS t1

UNION

SELECT * FROM `fm_company` AS t2

) subQuery

2.6、dependent  union

子查询中union且为union中第2个select开始的后面所有select,依赖于外部的结果集。

EXPLAIN SELECT *

FROM `fm_company` as t1

WHERE orgId IN(

SELECT orgId FROM fm_company as sub_t1 WHERE sub_t1.`id` = 148

union

SELECT orgId FROM fm_company AS sub_t2 WHERE sub_t2.`id` = 149

)

2.7 union result

顾名思义就是 union中合并的结果

3. table

显示这1步所访问的数据库中表的名称

4. type

这列很重要,显示了连接使用了哪一种种别,有没有使用索引。type代表查询履行计划(QEP)中指定的表使用的连接方式。从最好到最差的连接类型为

4.1.system

system为const1个特例,即表中只有1条记录。这个是及特殊的情况

4.2.const

const是在where条件以常量作为查询条件,表中最多有1条记录匹配。由因而常量,所以实际上只需要读1次。

const用于比较primary key 或unique索引。由于只匹配1行数据,所以很快

记住1定是用到primary key 或unique,并且只检索出两条数据的 情况下才会是const。以下面这个sql。直接用主键id 查找

EXPLAIN SELECT * FROM fm_company WHERE id=148

4.3. eq_reg

最多只会有1条匹配结果,1般是通过主键或是唯1索引来访问。1般会出现在连接查询的语句中。

mysql手册是这样说的:"对每一个来自于前面的表的行组合,从该表中读取1行。这多是最好的联接类型,除const类型。它用在1个索引的所有部份被联接使用并且索引是UNIQUE或PRIMARY

KEY"。eq_ref可以用于使用=比较带索引的列

EXPLAIN SELECT * FROM fm_company t1 ,fm_company t2 WHERE t1.id=t2.id

后面有时间再研究吧。

4. ref、5. range、6.index、7. all

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值