目錄
- 一、概述
- 1、explain語句測試
- 2、explain結(jié)果中各列的說明
- 二、explain之id列
- 1、環(huán)境準備
- 2、explain中的id列詳解
- 三、explain之select_type列
- 1、select_type
- 3、PRIMARY、SUBQUERY
- 4、DERIVED
- 5、UNION、UNION RESULT
- 四、explain之table、type列
- 1、table列
- 2、type列
- 3、例
- (1) NULL
- (2) system
- (3) const
- (4) eq_ref
- (5) ref
- (6) index
- (7) ALL
- 五、explain之key、rows、extra列
- 總結(jié)
一、概述
在 MySQL 中,我們可以使用慢查詢?nèi)罩净蛘?show processlist 命令等方式定位到執(zhí)行耗時較長的 SQL 語句,在這之后我們可以通過 EXPLAIN或者 DESC 命令獲取 MySQL 如何執(zhí)行 SELECT 語句 的信息,包括在 SELECT 語句執(zhí)行過程中表如何連接和連接的順序
1、explain語句測試
explain+select語句即 explain 命令的使用方式
![](/d/20211017/805bbf4f3f52c59ad3c302ac34e326b2.gif)
2、explain結(jié)果中各列的說明
![](/d/20211017/6abcf07314aa261c587d2896a0e76cf8.gif)
下面,將對這些列逐一進行講解
二、explain之id列
1、環(huán)境準備
![](/d/20211017/e543607ca6186c5a4163b084f44a8e0f.gif)
![](/d/20211017/3ece3e93aaa450a14c6aa4c46cce8721.gif)
2、explain中的id列詳解
id 字段是 select 查詢的序列號,是一組數(shù)字,表示的是查詢中執(zhí)行 select 子句或者是操作表的順序。id 情況有三種
(1) id 相同表示加載表的順序是從上到下
![](/d/20211017/3ebf248bea8ffc9e24980c4e53e05821.gif)
(2) id 不同id值越大,優(yōu)先級越高,越先被執(zhí)行
![](/d/20211017/44fee2b280068a528de65b2695e910b5.gif)
(3) id 有相同,也有不同,同時存在。id相同的可以認為是一組,從上往下順序執(zhí)行;在所有的組中,id的值越大,優(yōu)先級越高,越先執(zhí)行。
![](/d/20211017/d37202d32790c8f323b17c5bdf57e158.gif)
三、explain之select_type列
1、select_type
2、
SIMPLE
![](/d/20211017/e2cfcb0b917ed179e7be894b67505fee.gif)
3、PRIMARY、SUBQUERY
![](/d/20211017/d6607118abeef9319ac434fbbbf513af.gif)
4、DERIVED
![](/d/20211017/e233c15acba5b2a5cb5fc52e098de5aa.gif)
5、UNION、UNION RESULT
![](/d/20211017/49e7e433bcbda58be51ab1c924b05ae4.gif)
四、explain之table、type列
1、table列
table列展示該行數(shù)據(jù)屬于哪張表
2、type列
type列顯示的是訪問類型
![](/d/20211017/610cb02f7077e5903b055e90d0bdc4a5.gif)
3、例
(1) NULL
![](/d/20211017/1a28168397d40ab3d6998b694c67e553.gif)
(2) system
![](/d/20211017/48a10bde80383548d7f4254e038e0fc9.gif)
(3) const
![](/d/20211017/ec31c63ebcf5b37cc0cd077c2cd2e2e3.gif)
(4) eq_ref
![](/d/20211017/719d508e1fccfeff43990a377004f02c.gif)
(5) ref
![](/d/20211017/c6d9a4de36832cd4ee5d3e11ce84019f.gif)
(6) index
![](/d/20211017/53583b6a764b8648e391bcee4594332d.gif)
(7) ALL
![](/d/20211017/c7b6f4c34e31a73ae7a64de7e2673076.gif)
五、explain之key、rows、extra列
1、key
![](/d/20211017/1335d266e0beea472c277f6c56f05441.gif)
![](/d/20211017/7aebf0cefa70350c9d4aef98c039225a.gif)
2、rows
![](/d/20211017/84c3b5afc238759b1466cdd278c671e7.gif)
掃描行的數(shù)量
![](/d/20211017/f64b66c892b53b950d55a9de01b5c6ba.gif)
如果有索引,就只掃描一行
![](/d/20211017/c9c0cd9232f3cee3af2fae0a3d3e4269.gif)
3、extra
![](/d/20211017/efd24c7af7e1d77501715002b837a38c.gif)
![](/d/20211017/2bec2359664fc9ca86aa55eae9ca7c21.gif)
總結(jié)
到此這篇關(guān)于MySQL中explain語句的基本使用教程的文章就介紹到這了,更多相關(guān)MySQL中explain使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
您可能感興趣的文章:- MySQL性能分析及explain的使用說明
- mysql之explain使用詳解(分析索引)
- MySql中如何使用 explain 查詢 SQL 的執(zhí)行計劃
- mysql開啟慢查詢(EXPLAIN SQL語句使用介紹)
- mysql explain的用法(使用explain優(yōu)化查詢語句)
- mysql優(yōu)化利器之explain使用介紹
- MySQL性能優(yōu)化神器Explain的基本使用分析
- Mysql實驗之使用explain分析索引的走向
- Mysql Explain命令的使用與分析
- MySQL Explain使用詳解