mysql uncacheable subquery_MySQL的explain

一、Explain

74ebab7e7948f310c265099947fdc563.png

二、各项值

1、id

每个被独立执行的操作的标识,表示对象被操作的顺序;id值大,先被执行;如果相同,执行顺序从上到下。

若没有子查询和联合查询,id则都是1。Mysql会按照id从大到小的顺序执行query,在id相同的情况下,则从上到下执行。

2、select_type

查询中每个select子句的类型,提供了各种表示table列引用的使用方式的类型。

(1)SIMPLE

简单的SELECT语句(不包括UNION操作或子查询操作)

(2)PRIMARY/UNION

PRIMARY:查询中最外层的SELECT(如两表做UNION或者存在子查询的外层的表操作为PRIMARY,内层的操作为UNION)

UNION:UNION操作中,查询中处于内层的SELECT(内层的SELECT语句与外层的SELECT语句没有依赖关系)

(3)DEPENDENT UNION/UNIOIN RESULT

DEPENDENT UNION:UNION操作中,查询中处于内层的SELECT(内层的SELECT语句与外层的SELECT语句有依赖关系)

UNION RESULT:UNION操作的结果,id值通常为NULL

(4)SUBQUERY/DEPENDENT SUBQUERY

SUBQUERY:子查询中首个SELECT(如果有多个子查询存在)

DEPENDENT SUBQUERY:子查询中首个SELECT,但依赖于外层的表(如果有多个子查询存在)

(5)DERIVED/MATERIALIZED

DERIVED:被驱动的SELECT子查询(子查询位于FROM子句)

MATERIALIZED:被物化的子查询

(6)UNCACHEABLE SUBQUERY/UNCACHEABLE UNION

UNCACHEABLE SUBQUERY:对于外层的主表,子查询不可被物化,每次都需要计算(耗时操作)

UNCACHEABLE UNION:UNION操作中,内层的不可被物化的子查询(类似于UNCACHEABLE SUBQUERY)

3、table

名字,被操作的对象名称,通常是表名,或者表的别名,或者一个为查询产生临时表的标示符(如派生表、子查询、集合)。

4、type

连接操作的类型

5、partitions

匹配的分区信息(对于非分区表值为NULL)。

6、possible_keys

备选的索引(列出可能被使用到的索引)

7、key

经优化器选定的索引;常用ANALYZE TABLE命令,可以使优化器正确地选择索引。

8、key_len

被优化器选定的索引键的长度,单位是字节。

9、ref

表示本行被操作的对象的参照对象(被参照的对象可能是一个常量用const表示,也可能是其他表的key指向的对象)。

10、rows

查询执行所扫描的元组个数(对于InnoDB,此值是估计值)。

11、filtered

按照条件表上数据被过滤的元组个数的百分比,rows×filtered/100可以求出过滤后的元组数即实际的元组数。

12、Extra

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

原文:http://my.oschina.net/scipio/blog/292992

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值