EXPLAIN中的顺序是什么意思?

时间:2013-10-17 18:37:46

标签: mysql sql explain

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;

这是他们给出的第一个EXPLAIN:

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

我的问题是......订单代表什么?在第一个EXPLAIN中,et列位于顶部。在第二个它在底部。这有什么特别的意义吗?可以从中得出任何推论吗?

1 个答案:

答案 0 :(得分: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是第一个读表但在修改之后它不需要直到最后一个阶段。