鏈接操做的類型算法
(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,全文檢索