mysql explain 的type解釋
阿新 • • 發佈:2018-12-14
連線操作的型別
(1)SYSTEM
CONST的特例,當表上只有一條元組匹配
(2)CONST
WHERE條件篩選後表上至多有一條元組匹配時,比如WHERE ID = 2 (ID是主鍵,值為2的要麼有一條要麼沒有)
(3)EQ_REF
參與連線運算的表是內表(在程式碼實現的演算法中,兩表連線時作為迴圈中的內迴圈遍歷的物件,這樣的表稱為內表)。
基於索引(連線欄位上存在唯一索引或者主鍵索引,且操作符必須是“=”謂詞,索引值不能為NULL)做掃描,使得對外表的一條元組,內表只有唯一一條元組與之對應。
(4)REF
可以用於單表掃描或者連線。參與連線運算的表,是內表。
基於索引(連線欄位上的索引是非唯一索引,操作符必須是“=”謂詞,連線欄位值不可為NULL)做掃描,使得對外表的一條元組,內表可有若干條元組與之對應。
(5)REF_OR_NULL
類似REF,只是搜尋條件包括:連線欄位的值可以為NULL的情況,比如 where col = 2 or col is null
(6)RANGE
範圍掃描,基於索引做範圍掃描,為諸如BETWEEN,IN,>=,LIKE類操作提供支援
(7)INDEX_SCAN
索引做掃描,是基於索引在索引的葉子節點上找滿足條件的資料(不需要訪問資料檔案)
(8)ALL
全表掃描或者範圍掃描:不使用索引,順序掃描,直接讀取表上的資料(訪問資料檔案)
(9)UNIQUE_SUBQUERY
在子查詢中,基於唯一索引進行掃描,類似於EQ_REF
(10)INDEX_SUBQUERY
在子查詢中,基於除唯一索引之外的索引進行掃描
(11)INDEX_MERGE
多重範圍掃描。兩表連線的每個表的連線欄位上均有索引存在且索引有序,結果合併在一起。適用於作集合的並、交操作。
(12)FT
FULL TEXT,全文檢索