EXPLAIN 使用的方式:
只要在SELECT語法前面加上 EXPLAIN 指令即可。

以下為執行畫面範例



其中針對EXPLAIN的欄位說明如下:
table:關連到的資料表(Table)會顯示在此。
type:顯示使用了何種類型。從最優至最差的類型為const、eq_reg、ref、range、indexhe、ALL。
         System:system資料表,此為const連接類型的特殊情況。          
         Const:資料表中的一個記錄的最大值能夠符合這個查詢。因為只有一行,這個值就是
                      常數,因為MySQL會先讀這個值然後把它當做常數。
         eq_ref:MySQL在連接查詢時,會從最前面的資料表,對每一個記錄的聯合,從資料
                       表中讀取一個記錄,在查詢時會使用索引為主鍵或唯一鍵的全部。
         ref:只有在查詢使用了非唯一鍵或主鍵時才會發生。
         range:使用索引返回一個範圍的結果。例如:使用大於>或小於<查詢時發生。
         index:此為針對索引中的資料進行查詢。
         ALL:針對每一筆記錄進行完全掃描。
possible_keys:顯示可能使用到的索引。此為從WHERE語法中選擇一個適合的欄位名稱。
key:實際使用到的索引。如果為NULL,則是沒有使用索引。
key_len:使用索引的長度。長度越短 準確性越高。
ref:顯示那一列的索引被使用。一般是一個常數(const)。
rows:MySQL用來返回資料的筆數。
Extra:MySQL用來解析額外的查詢訊息。如果此欄位的值為:Using temporary和Using filesort,表示MySQL無法使用索引。
Extra為MySQL用來解析額外的查詢訊息,其中欄位值所代表的意義如下:
         Distinct:當MySQL找到相關連的資料時,就不再搜尋。
         Not exists:MySQL優化 LEFT JOIN,一旦找到符合的LEFT JOIN資料後,就不再搜
                            尋。
         Range checked for each Record(index map:#):無法找到理想的索引。此為最慢的
                                                                                          使用索引。
         Using filesort:當出現這個值時,表示此SELECT語法需要優化。因為MySQL必須進
                                    行額外的步驟來進行查詢。
         Using index:返回的資料是從索引中資料,而不是從實際的資料中返回,當返回的資
                               料都出現在索引中的資料時就會發生此情況。
         Using temporary:同Using filesort,表示此SELECT語法需要進行優化。此為MySQL
                                       必須建立一個暫時的資料表(Table)來儲存結果,此情況會發生在針
                                       對不同的資料進行ORDER BY,而不是GROUP BY。
         Using where:使用WHERE語法中的欄位來返回結果。



 
















其它文章

arrow
arrow
    創作者介紹
    創作者 PG Levin Li 的頭像
    PG Levin Li

    程式開發學習之路

    PG Levin Li 發表在 痞客邦 留言(0) 人氣()