對於mysql的執行計劃可以在select前添加Explain來實現,它可以告訴我們你的語句性能如何。 下麵是對explain的具體說明,也都是官方的,以後進行參考。 SELECT類型,可以為以下任何一種: SIMPLE:簡單SELECT(不使用UNION或子查詢) PRIMARY:最外面的SELE ...
對於mysql的執行計劃可以在select前添加Explain來實現,它可以告訴我們你的語句性能如何。
下麵是對explain的具體說明,也都是官方的,以後進行參考。
id | SELECT識別符。這是SELECT的查詢序列號 |
select_type |
SELECT類型,可以為以下任何一種:
|
table |
輸出的行所引用的表 |
type |
聯接類型。下麵給出各種聯接類型,按照從最佳類型到最壞類型進行排序:
|
possible_keys |
指出MySQL能使用哪個索引在該表中找到行 |
key | 顯示MySQL實際決定使用的鍵(索引)。如果沒有選擇索引,鍵是NULL。 |
key_len | 顯示MySQL決定使用的鍵長度。如果鍵是NULL,則長度為NULL。 |
ref | 顯示使用哪個列或常數與key一起從表中選擇行。 |
rows | 顯示MySQL認為它執行查詢時必須檢查的行數。多行之間的數據相乘可以估算要處理的行數。 |
filtered | 顯示了通過條件過濾出的行數的百分比估計值。 |
Extra |
該列包含MySQL解決查詢的詳細信息
|
type:這是重要的列,顯示連接使用了何種類型。從最好到最差的連接類型為const、eq_reg、ref、range、index和ALL
type顯示的是訪問類型,是較為重要的一個指標,結果值從好到壞依次是:system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL
一般來說,得保證查詢至少達到range級別,最好能達到ref。
我們在進行條件查詢時,建議使用索引,否則將引起全表掃描,IO的開銷和程式的性能都沒法保證!
感謝閱讀!