Explain性能分析(一)——返回的id和select_type

前言

之前写了Explain性能分析概述其中简单介绍了一下Explain的返回值都有那些,和每个返回值的简单介绍。这篇文章主要是针对上一篇的细节上的描述并有sql语句的实例参考。

正文

一、id

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

1、id相同,执行顺序由上到下

在这里插入图片描述

2、 id 不同,id 不同,如果是子查询,id 的序号会递增,id 值越大优先级越高,越先被执行

在这里插入图片描述

3、有相同也有不同
id 如果相同,可以认为是一组,从上往下顺序执行;在所有组中,id 值越大,优先级越高,越先执行衍生 = DERIVED
关注点:id 号每个号码,表示一趟独立的查询。一个 sql 的查询趟数越少越好。

在这里插入图片描述

二、select_type

select_type 代表查询的类型,主要是用于区别普通查询、联合查询、子查询等的复杂查询。

在这里插入图片描述
1、SIMPLE
SIMPLE 代表单表查询;
在这里插入图片描述
2、PRIMARY
查询中若包含任何复杂的子部分,最外层查询则被标记为 Primary。
在这里插入图片描述
3、DERIVED
在 FROM 列表中包含的子查询被标记为 DERIVED(衍生),MySQL 会递归执行这些子查询, 把结果放在临时表里。

4、SUBQUERY
在 SELECT 或 WHERE 列表中包含了子查询。

在这里插入图片描述
5、DEPENDENT SUBQUERY
在 SELECT 或 WHERE 列表中包含了子查询,子查询基于外层。 都是 where 后面的条件,subquery 是单个值,dependent subquery 是一组值。

在这里插入图片描述
6、UNCACHEABLE SUBQUREY
当使用了@@来引用系统变量的时候,不会使用缓存。

在这里插入图片描述
7、UNION
若第二个 SELECT 出现在 UNION 之后,则被标记为 UNION;若 UNION 包含在 FROM 子句的子查询中,外层 SELECT 将被标记为:DERIVED。

在这里插入图片描述
8、UNION RESULT
从 UNION 表获取结果的 SELECT。

结束

不想把篇幅写的太长了,所以就分开来写了,应该算是一个系列的博客了吧!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章