1

8.2.2. EXPLAIN 输出格式基于以下 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

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

4

1 回答 1

1

根据MySQL 参考手册

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

所以我读到说,在版本 1et中是第一个读取的表,但在修改之后直到最后阶段才需要。

于 2013-10-17T18:53:01.720 回答