2013-10-17 98 views
1

8.2.2. EXPLAIN Output Format給出了幾個例子基於以下SQL查詢的連續優化講解:EXPLAIN中的順序是什麼意思?

EXPLAIN SELECT tt.TicketNumber, tt.TimeIn, 
       tt.ProjectReference, tt.EstimatedShipDate, 
       tt.ActualShipDate, tt.ClientID, 
       tt.ServiceCodes, tt.RepetitiveID, 
       tt.CurrentProcess, tt.CurrentDPPerson, 
       tt.RecordVolume, tt.DPPrinted, et.COUNTRY, 
       et_1.COUNTRY, do.CUSTNAME 
     FROM tt, et, et AS et_1, do 
     WHERE tt.SubmitTime IS NULL 
      AND tt.ActualPC = et.EMPLOYID 
      AND tt.AssignedPC = et_1.EMPLOYID 
      AND tt.ClientID = do.CUSTNMBR; 

這裏的第一個解釋他們給:

table type possible_keys key key_len ref rows Extra 
et ALL PRIMARY  NULL NULL NULL 74 
do ALL PRIMARY  NULL NULL NULL 2135 
et_1 ALL PRIMARY  NULL NULL NULL 74 
tt ALL AssignedPC, NULL NULL NULL 3872 
      ClientID, 
      ActualPC 
     Range checked for each record (index map: 0x23) 

這裏是第二(僅次於優化已作出) :

table type possible_keys key  key_len ref   rows Extra 
tt ALL AssignedPC, NULL NULL NULL  3872 Using 
      ClientID,           where 
      ActualPC 
do ALL PRIMARY  NULL NULL NULL  2135 
     Range checked for each record (index map: 0x1) 
et_1 ALL PRIMARY  NULL NULL NULL  74 
     Range checked for each record (index map: 0x1) 
et eq_ref PRIMARY  PRIMARY 15  tt.ActualPC 1 

我的問題是......該命令代表什麼?在第一個解釋中,et列在最上面。在第二個它將在底部。這有什麼特別的意義嗎?有沒有可以從中得出任何推論?

+0

我只是從http://dev.mysql.com/doc/refman/5.0/en/explain-output.html複製/粘貼查詢。而且我沒有詢問ORDER BY - 我在問爲什麼EXPLAIN按特定順序返回列。 – neubert

回答

1

按照MySQL reference manual

EXPLAIN returns a row of information for each table used in the SELECT statement. 
It lists the tables in the output in the order that MySQL would read them while 
processing the statement 

所以我讀的話說,在第1版et是讀取第一個表,但修改後它不需要直到最後階段。