認識mysql索引類型
連接操作的類型
(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,全文檢索