通過 EXPLAIN 分析低效 SQL 的執行計劃
阿新 • • 發佈:2018-11-01
每個列的簡單解釋如下:
select_type:表示 SELECT 的型別,常見的取值有 SIMPLE(簡單表,即不使用表連線
或者子查詢)、PRIMARY(主查詢,即外層的查詢)、UNION(UNION 中的第二個或者後面的查詢語句)、SUBQUERY(子查詢中的第一個 SELECT)等。
table:輸出結果集的表。
type:表示表的連線型別,效能由好到差的連線型別為 system(表中僅有一行,即常量表)、const(單表中最多有一個匹配行,例如 primary key 或者 unique index)、 eq_ref(對於前面的每一行,在此表中只查詢一條記錄,簡單來說,就是多表連線 中使用primarykey或者uniqueindex)、re(f 與eq_ref類似,區別在於不是使用primary key 或者 unique index,而是使用普通的索引)、ref_or_null(與 ref 類似,區別在於 條件中包含對 NULL 的查詢)、index_merge(索引合併優化)、unique_subquery(in 的後面是一個查詢主鍵欄位的子查詢)、index_subquery(與 unique_subquery 類似, 區別在於 in 的後面是查詢非唯一索引欄位的子查詢)、range(單表中的範圍查詢)、 index(對於前面的每一行,都通過查詢索引來得到資料)、all(對於前面的每一行,都通過全表掃描來得到資料)。
possible_keys:表示查詢時,可能使用的索引。
key:表示實際使用的索引。
key_len:索引欄位的長度。
rows:掃描行的數量。
Extra:執行情況的說明和描述。