type | 說明 |
---|---|
ALL | 全數據表掃描 |
index | 全索引表掃描 |
RANGE | 對索引列進行范圍查找 |
INDEX_MERGE | 合並索引,使用多個單列索引搜索 |
REF | 根據索引查找一個或多個值 |
EQ_REF | 搜索時使用primary key 或 unique類型 |
CONST | 常量,表最多有一個匹配行,因為僅有一行,在這行的列值可被優化器剩余部分認為是常數,const表很快,因為它們只讀取一次。 |
SYSTEM | 系統,表僅有一行(=系統表)。這是const聯接類型的一個特例。 |
性能:all
< index
< range
< index_merge
< ref_or_null
< ref
< eq_ref
< system/const
性能在 range 之下基本都可以進行調優
補充說明:
system:表只有一行記錄,相當於系統表(通常此類表單用來作為系統參數等常用且不經常修改的)
const:通過索引一次就找到,只匹配一行數據
eq_ref: 唯一性索引掃描,對於每個索引鍵,表中只有一條記錄與之匹配
ref:非唯一性索引掃描,返回匹配某個單獨值的所有行(用於=、<、> 操作符帶索引的列)
index_merge: 很多人不太深入理解index_merge,並且只會在mysql5.7及以上版本會出現,這里引用CSDN文章給大家一個詳細的說明:https://www.cnblogs.com/digdeep/p/4975977.html
index: 這種連接類型只是另外一種形式的全表掃描,只不過它的掃描順序是按照索引的順序
all:全表掃描,性能最差