что означает порядок в EXPLAIN?

8.2.2. Выходной формат EXPLAIN дает несколько примеров EXPLAIN, основанных на последовательных оптимизациях следующего SQL-запроса:

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 находится сверху. Во втором он был на дне. Есть ли в этом какое-то особое значение? Можно ли из этого сделать какие-то выводы?


person neubert    schedule 17.10.2013    source источник
comment
Я просто скопировал/вставил запрос из примера в dev.mysql .com/doc/refman/5.0/en/explain-output.html . И я не спрашиваю о ORDER BY — я спрашиваю о том, почему EXPLAIN возвращает столбцы в определенном порядке.   -  person neubert    schedule 17.10.2013


Ответы (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

Итак, я прочитал, что в версии 1 et - это первая читаемая таблица, но после модификации она не нужна до последнего этапа.

person Clart Tent    schedule 17.10.2013