Spec-Zone .ru
спецификации, руководства, описания, API

8.8.3. EXPLAIN EXTENDED Выходной Формат

Когда EXPLAIN используется с EXTENDED ключевое слово, вывод включает a filtered столбец, не иначе выведенный на экран. Этот столбец указывает на предполагаемый процент строк таблицы, которые будут фильтроваться по табличному условию. Кроме того, оператор производит дополнительную информацию, которая может быть просмотрена, выходя a SHOW WARNINGS оператор после EXPLAIN оператор. Message значение в SHOW WARNINGS вывод выводит на экран, как оптимизатор квалифицирует имена таблиц и имена столбцов в SELECT оператор, что SELECT похож после приложения правил перезаписи и оптимизации, и возможно других примечаний о процессе оптимизации. Вот пример:

mysql> EXPLAIN
        EXTENDED    -> SELECT t1.a, t1.a IN (SELECT t2.a FROM t2)
        FROM t1\G*************************** 1. row ***************************           id: 1  select_type: PRIMARY        table: t1         type: indexpossible_keys: NULL          key: PRIMARY      key_len: 4          ref: NULL         rows: 4     filtered: 100.00        Extra: Using index*************************** 2. row ***************************           id: 2  select_type: SUBQUERY        table: t2         type: indexpossible_keys: a          key: a      key_len: 5          ref: NULL         rows: 3     filtered: 100.00        Extra: Using index2 rows in set, 1 warning (0.00 sec)mysql> SHOW WARNINGS\G*************************** 1. row ***************************  Level: Note   Code: 1003Message: /* select#1 */ select `test`.`t1`.`a` AS `a`,         <in_optimizer>(`test`.`t1`.`a`,`test`.`t1`.`a` in         ( <materialize> (/* select#2 */ select `test`.`t2`.`a`         from `test`.`t2` where 1 having 1 ),         <primary_index_lookup>(`test`.`t1`.`a` in         <temporary table> on <auto_key>         where ((`test`.`t1`.`a` = `materialized-subquery`.`a`))))) AS `t1.a         IN (SELECT t2.a FROM t2)` from `test`.`t1`1 row in set (0.00 sec)

EXPLAIN EXTENDED может использоваться с SELECT, DELETE, INSERT, REPLACE, и UPDATE операторы. Однако, следующий SHOW WARNINGS оператор выводит на экран непустой результат только для SELECT операторы.

Поскольку оператор, выведенный на экран SHOW WARNINGS может содержать специальные маркеры, чтобы предоставить информацию о перезаписи запроса или действиях оптимизатора, оператор является не обязательно допустимым SQL и не предназначается, чтобы быть выполненным. Вывод может также включать строки с Message значения, которые обеспечивают дополнительные примечания не-SQL о мерах, предпринятых оптимизатором.

Следующий список описывает специальные маркеры, которые могут появиться в EXTENDED вывод, выведенный на экран SHOW WARNINGS: