type類型 | 解釋 |
---|---|
system | const的特例,僅返回一條數(shù)據(jù)的時(shí)候。 |
const | 查找主鍵索引,返回的數(shù)據(jù)至多一條(0或者1條)。 屬于精確查找 |
eq_ref | 查找唯一性索引,返回的數(shù)據(jù)至多一條。屬于精確查找 |
ref | 查找非唯一性索引,返回匹配某一條件的多條數(shù)據(jù)。屬于精確查找、數(shù)據(jù)返回可能是多條 |
range | 查找某個(gè)索引的部分索引,一般在where子句中使用 < 、>、in、between等關(guān)鍵詞。只檢索給定范圍的行,屬于范圍查找 |
index | 查找所有的索引樹,比ALL要快的多,因?yàn)樗饕募葦?shù)據(jù)文件小的多 |
ALL | 不使用任何索引,進(jìn)行全表掃描,性能最差 |
從下到上逐漸變好,使用的索引至少要達(dá)到range 級(jí)別
id 為主鍵索引, s_mobile為唯一索引,s_admin_id為非唯一性索引
( 唯一性索引:這種索引和“普通索引”基本相同,但有一個(gè)區(qū)別:索引列的所有值都只能出現(xiàn)一次,即必須唯一 )
-
const
查找主鍵索引,返回的數(shù)據(jù)至多一條(0或者1條)。 屬于精確查找
-
eq_ref
查找唯一性索引,返回的數(shù)據(jù)至多一條。屬于精確查找
-
ref
查找非唯一性索引,返回匹配某一條件的多條數(shù)據(jù)。屬于精確查找、數(shù)據(jù)返回可能是多條
-
range
查找某個(gè)索引的部分索引,一般在where子句中使用 < 、>、in、between等關(guān)鍵詞。只檢索給定范圍的行,屬于范圍查找
index
這種連接類型只是另外一種形式的全表掃描,只不過它的掃描順序是按照索引的順序。這種掃描根據(jù)索引然后回表取數(shù)據(jù),和all相比,他們都是取得了全表的數(shù)據(jù),而且index要先讀索引而且要回表隨機(jī)取數(shù)據(jù),因此index不可能會(huì)比all快(取同一個(gè)表數(shù)據(jù)),但為什么官方的手冊(cè)將它的效率說的比all好,唯一可能的原因在于,按照索引掃描全表的數(shù)據(jù)是有序的。這樣一來,結(jié)果不同,也就沒法比效率的問題了。
所以說如果type為all或者index,都應(yīng)對(duì)其進(jìn)行優(yōu)化。甚至我們可以將其理解相當(dāng)于索引無效。
不過如果是從索引就可獲取到數(shù)據(jù),那使用index的話,速度是超過ALL的ALL
不使用任何索引,進(jìn)行全表掃描,性能最差
轉(zhuǎn)載:http://www.lxweimin.com/p/bb7722043aec