1. 程式人生 > >mysql explain 的type解釋

mysql explain 的type解釋

連線操作的型別

(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,全文檢索