MySQL中SQL語句explain執行分析診斷第二篇type詳解

type訪問類型排序

從最好到最差依次是:system > const > eq_ref > ref > range > index > all

通常來講:得保證至少達到range級別,最好是ref


MySQL中SQL語句explain執行分析診斷第二篇type詳解

MySQL中SQL語句explain執行分析診斷第二篇type詳解


system

解釋:表僅有一行(等於系統表)。這是 const 連接類型的一個特例。


const

解釋:表示通過索引依次就找到了,const 用於用常數值比較 PRIMARY KEY或者unique,當查詢的表僅有一行時,使用 System。


eq_ref

解釋:唯一性索引掃描,對於每一個索引鍵,表中只有一條記錄與之匹配,常見主建或唯一索引掃描。


ref

解釋:非唯一性索引掃描,返回匹配某個單獨值得所有行,本質上也是一種索引訪問,連接不能基於關鍵字選擇單個行,可能查找 到多個符合條件的行。 叫做 ref 是因為索引要 跟某個參考值相比較。這個參考值或者是一 個常數,或者是來自一個表裡的多表查詢的 結果值。


ref_or_null

解釋:如同 ref, 但是 MySQL 必須在初次查找的結果 裡找出 null 條目,然後進行二次查找。


index_merge

解釋:說明索引合併優化被使用了。


unique_subquery

解釋:在某些 IN 查詢中使用此種類型,而不是常規的 ref:value IN (SELECT primary_key FROM single_table WHERE some_expr)


index_subquery

解釋:在 某 些 IN 查 詢 中 使 用 此 種 類 型 , 與 unique_subquery 類似,但是查詢的是非唯一 性索引: value IN (SELECT key_column FROM single_table WHERE some_expr)


range

只檢索給定範圍的行,使用一個索引來選擇 行。key 列顯示使用了哪個索引。當使用=、 <>、>、>=、、BETWEEN 或者 IN 操作符,用常量比較關鍵字列時,可 以使用 range。


index

解釋:全表掃描,只是掃描表的時候按照索引次序 進行而不是行。主要優點就是避免了排序, 但是開銷仍然非常大。


all

解釋:最壞的情況,從頭到尾全表掃描。


點擊關注發私信或評論交流文章中有問題的地方,相互學習和答疑


分享到:


相關文章: