1. 程式人生 > >通過 EXPLAIN 分析低效 SQL 的執行計劃

通過 EXPLAIN 分析低效 SQL 的執行計劃

每個列的簡單解釋如下:
 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:執行情況的說明和描述。