MySQL中explain語句的使用

pedro7發表於2021-03-27

一、概述

在 MySQL 中,我們可以使用慢查詢日誌或者 show processlist 命令等方式定位到執行耗時較長的 SQL 語句,在這之後我們可以通過 EXPLAIN或者 DESC 命令獲取 MySQL 如何執行 SELECT 語句 的資訊,包括在 SELECT 語句執行過程中表如何連線和連線的順序

1、explain語句測試

explain+select語句即 explain 命令的使用方式
explain測試

2、explain結果中各列的說明explain中的列

下面,將對這些列逐一進行講解

二、explain之id列

1、環境準備

在這裡插入圖片描述
在這裡插入圖片描述

2、explain中的id列詳解

id 欄位是 select 查詢的序列號,是一組數字,表示的是查詢中執行 select 子句或者是操作表的順序。id 情況有三種
(1) id 相同表示載入表的順序是從上到下
id相同
(2) id 不同id值越大,優先順序越高,越先被執行
id不同
(3) id 有相同,也有不同,同時存在。id相同的可以認為是一組,從上往下順序執行;在所有的組中,id的值越大,優先順序越高,越先執行。
id有相同也有不同

三、explain之select_type列

1、select_typeselect_type
2、SIMPLE

SIMPLE

3、PRIMARY、SUBQUERY

PRIMARY和SUBQUERY

4、DERIVED

DERIVED

5、UNION、UNION RESULTUNION和UNION RESULT

四、explain之table、type列

1、table列

table列展示該行資料屬於哪張表

2、type列

type列顯示的是訪問型別
type列

3、例

(1) NULL
NULL

(2) system
system

(3) const
const

(4) eq_ref
eq_ref

(5) ref
ref

(6) index
index

(7) ALL
ALL

五、explain之key、rows、extra列

1、key

key
key示例

2、rows

資料
掃描行的數量
掃描行的數量
如果有索引,就只掃描一行
如果有索引,就只掃描一行

3、extra

Extra說明Extra示例

相關文章