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

前言

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

正文

一、id

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

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

Explain性能分析(一)——返回的id和select_type_第1张图片

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

Explain性能分析(一)——返回的id和select_type_第2张图片

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

Explain性能分析(一)——返回的id和select_type_第3张图片

二、select_type

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

Explain性能分析(一)——返回的id和select_type_第4张图片
1、SIMPLE
SIMPLE 代表单表查询;
Explain性能分析(一)——返回的id和select_type_第5张图片
2、PRIMARY
查询中若包含任何复杂的子部分,最外层查询则被标记为 Primary。
Explain性能分析(一)——返回的id和select_type_第6张图片
3、DERIVED
在 FROM 列表中包含的子查询被标记为 DERIVED(衍生),MySQL 会递归执行这些子查询, 把结果放在临时表里。

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

Explain性能分析(一)——返回的id和select_type_第7张图片
5、DEPENDENT SUBQUERY
在 SELECT 或 WHERE 列表中包含了子查询,子查询基于外层。 都是 where 后面的条件,subquery 是单个值,dependent subquery 是一组值。

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

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

Explain性能分析(一)——返回的id和select_type_第8张图片
8、UNION RESULT
从 UNION 表获取结果的 SELECT。

结束

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

你可能感兴趣的:(MySQL,sql,sql优化,Explain,性能分析)