(2)mysql explain详解

MySQL的EXPLAIN关键字用于分析SQL语句的执行计划,展示如何处理查询,包括id、select_type、table、type、possible_keys、key、key_len、ref、rows和extra等字段的详细解释,帮助优化查询性能。例如,using filesort表示无法利用索引排序,using index表示直接从索引获取数据,rows表示预计读取的行数。
摘要由CSDN通过智能技术生成

Explain详解

使用EXPLAIN关键字可以模拟优化器执行SQL语句,从而知道MySQL是 如何处理你的SQL语句的。分析你的查询语句或是结构的性能瓶颈
下面是使用 explain 的例子:
在 select 语句之前增加 explain 关键字,MySQL 会在查询上设置一个标记,执行查询时,会返回执行计划的信息,而不是执行这条SQL(如果 from 中包含子查询,仍会执行该子查询,将结果放入临时表中)

1、执行计划中包含的信息

Column 含义
id id值越大,查询的优先级越大。相同的id,从上往下执行 ,id为NULL最后执行
select_type 查询的类型
table 正在访问的表
partitions 查询将访问的分区
type 关联类型或访问类型
possible_keys 可能使用哪些索引来查找
key 实际用到的索引
key_len 索引长度
ref 显示了在key列记录的索引中,表查找值所用到的列或常量
rows mysql估计要读取并检测的行数
filtered Percentage of rows filtered by table condition
extra 展示的是额外信息

id

select查询的序列号,包含一组数字,表示查询中执行select子句或者操作表的顺序

id号分为三种情况:

1、如果id相同,那么执行顺序从上到下
​2、如果id不同,如果是子查询,id的序号会递增,id值越大优先级越高,越先被执行
3、id相同和不同的,同时存在:相同的可以认为是一组,从上往下顺序执行,在所有组中,id值越大,优先级越高,越先执行

select_type

主要用来分辨查询的类型,是普通查询还是联合查询还是子查询

select_type Value Meaning
SIMPLE 简单查询。查询不包含子查询和union
PRIMARY 复杂查询中最外层的 select
UNION 在 union 中的第二个和随后的 select
DEPENDENT UNION 跟union类似,此处的depentent表示union或union all联合而成的结果会受外部表影响
UNION RESULT 从 union 临时表检索结果的 select
SUBQUERY 包含在 select 中的子查询(不在 from 子句中)
DEPENDENT SUBQUERY subquery的子查询要受到外部表查询的影响
DERIVED 包含在 from 子句中的子查询。MySQL会将结果存放在一个临时表中,也称为派生表(derived的英文含义)
UNCACHEABLE SUBQUERY 表示使用子查询的结果不能被缓存
UNCACHEABLE UNION 表示union的查询结果不能被缓存
--sample:简单的查询,不包含子查询和union
explain select * from emp;

--primary:查询中若包含任何复杂的子查询,最外层查询则被标记为Primary
explain select staname,ename supname from (select ename staname,mgr from emp) t join emp on t.mgr=emp.empno ;

--union:若第二个select出现在union之后,则被标记为union
explain select * from emp where deptno = 10 union select * fr
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值