1. 程式人生 > >Mysql Database 執行計劃: explain

Mysql Database 執行計劃: explain

id
顯示select語句的執行順序
(1) id相同時,執行順序由上至下
(2) 如果是子查詢,id的序號會遞增,id值越大優先順序越高,越先被執行
(3) id如果相同,可以認為是一組,從上往下順序執行;在所有組中,id值越大,優先順序越高,越先執行

select_type
顯示select語句的查詢型別
simple:select語句中不包含union與子查詢
primary:select語句中若包含子查詢,最外層的select語句
subquery:select語句中包含的子查詢
derived:select語句的from子句中包含的子查詢
union:通過union來連線多個select語句時,在union後面的select語句

table 
顯示select語句查詢的表或衍生表

type
顯示mysql決定如何訪問表(訪問型別)
ALL:全表掃描
index:全索引掃描
range:索引範圍掃描
ref:非唯一索引掃描,對於每個索引鍵,表中可能有多條記錄與之匹配
eq_ref:主鍵或唯一索引掃描,對於每個索引鍵,表中只有一條記錄與之匹配

possible_keys列
顯示mysql可能使用哪些索引來訪問表
 
key列
顯示mysql實際使用哪個索引來訪問表

key_len列
顯示索引中使用的位元組數,通過這個值可以判斷使用了索引中的哪些列
 
ref
顯示錶的連線匹配條件

rows
顯示mysql估算的在查詢過程中表需要被掃描多少行

Extra
Using index:僅訪問索引就可以獲得結果集,無需訪問表
Using where:儲存引擎返回的資料需要進行過濾
Using temporary:在查詢過程中需要建立臨時表
Using filesort:在查詢過程中使用了檔案排序,因為排序列未建立索引
Using join buffer:在多表join查詢時,內表的連線列未建立索引,需要在join buffer中快取查詢中外表相關的所有列(block nest loop join)