一、概述
在 MySQL 中,我們可以使用慢查詢日誌或者 show processlist 命令等方式定位到執行耗時較長的 SQL 語句,在這之後我們可以通過 EXPLAIN或者 DESC 命令獲取 MySQL 如何執行 SELECT 語句 的資訊,包括在 SELECT 語句執行過程中表如何連線和連線的順序
1、explain語句測試
explain+select語句
即 explain 命令的使用方式
2、explain結果中各列的說明
下面,將對這些列逐一進行講解
二、explain之id列
1、環境準備
2、explain中的id列詳解
id 欄位是 select 查詢的序列號,是一組數字,表示的是查詢中執行 select 子句或者是操作表的順序。id 情況有三種
(1) id 相同表示載入表的順序是從上到下
(2) id 不同id值越大,優先順序越高,越先被執行
(3) id 有相同,也有不同,同時存在。id相同的可以認為是一組,從上往下順序執行;在所有的組中,id的值越大,優先順序越高,越先執行。
三、explain之select_type列
1、select_type
2、SIMPLE
3、PRIMARY、SUBQUERY
4、DERIVED
5、UNION、UNION RESULT
四、explain之table、type列
1、table列
table列展示該行資料屬於哪張表
2、type列
type列顯示的是訪問型別
3、例
(1) NULL
(2) system
(3) const
(4) eq_ref
(5) ref
(6) index
(7) ALL
五、explain之key、rows、extra列
1、key
2、rows
掃描行的數量
如果有索引,就只掃描一行