認識mysql索引類型

me87re 9年前發布 | 9K 次閱讀 索引 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,全文檢索

 本文由用戶 me87re 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!