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。

結束

不想把篇幅寫的太長了,所以就分開來寫了,應該算是一個系列的博客了吧!

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