Mysql之explain详解

explain字段说明

在需要执行的sql语句前面加上 explain 可以模拟优化器对语句的执行过程。
示例说明: explain select * from sys_user;
在这里插入图片描述
explain会返回1条或多条数据,下面解释各列含义:

1、 id 执行顺序。

这是一个相对大小,表示各条语句执行的先后顺序,越大越先执行,id相同时从上到下执行。另外在union查询时,外层的union结果语句的id为null,同时这一行的table列会是<unionM,N>的形式,表示引用 id 值为 M 和 N 的行的并集。

explain select realname from sys_user
union select par_name from  sys_param 

在这里插入图片描述
先查询sys_param表,然后查询sys_user表,最后将1和2的结果进行并集。第三行union1,2对应上面id=1和id=2的两条查询

2、 select_type 查询类型。

下面列举常见的几种值

  • SIMPLE 简单查询,没有union和子查询
  • PRIMARY 最外层查询
  • 有子查询的情况下,最外层的查询就是PRIMARY。在union 语句中,第一个查询也是PRIMARY,如上图。注意它不是主键查询,跟主键没关系
    在这里插入图片描述
  • UNION union查询中,第二个以及之后的查询标记为UNION
explain select realname from sys_user
union select par_name from  sys_param 

在这里插入图片描述

  • DEPENDENT UNION
    依赖于外部查询的union语句中, 第二个以及之后的查询标记为DEPENDENT UNION。
  • DEPENDENT SUBQUERY 依赖于外部查询的子查询中第一个查询

这里的依赖外部查询是指什么呢,就是说他本身是一个子查询,但是它引用了外部查询中的某个表。

  • UNION RESULT UNION的结果,一般id为null
    典型示例:
explain select 
u.USER_USERNAME
from SYS_USER u 
where exists (select  UR_ROLE_ID from SYS_USER_ROLE where  UR_USER_ID= u.USER_USERNAME
union select ORG_NAME from SYS_ORGANIZATION org
where org.ORG_CODE = u.USER_ORGANIZATION_CODE) 

在这里插入图片描述

  • SUBQUERY select子句或者where条件里的子查询(当然这个子查询不是依赖于外部查询的)
explain select 
u.USER_USERNAME,(SELECT  max(ORG_NAME) from SYS_ORGANIZATION org1 w
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值