Главная Новости

Вызов команды explain

Опубликовано: 19.10.2017

Чтобы воспользоваться командой EXPLAIN, достаточно добавить слово EXPLAIN перед словом SELECT в запросе. MySQL пометит этот запрос специальным флагом. Во время его обработки этот флаг заставит сервер сообщать информацию о каждом шаге плана выполнения, а не исполнять его. При этом возвращается одна или несколько строк, описывающих этапы плана выполнения и порядок их запуска.

Ниже показан простейший из возможных результатов EXPLAIN:

mysql> EXPLAIN SELECT 1\G

id: 1

select_type: SIMPLE table: NULL type: NULL possible_keys: NULL key: NULL key_len: NULL ref: NULL rows: NULL Extra: No tables used

Для каждой встречающейся в запросе таблицы выводится одна строка. Если соединяются две таблицы, то будет выведено две строки. Если одна и та же таблица попадается дважды, например при соединении таблицы с собой же, тоже будет выведено две строки. В этом контексте семантика слова «таблица» довольно широка: оно может обозначать подзапрос, результат объединения (UNION) и т. д. Позже мы увидим, почему это так.

Существует две важные разновидности команды EXPLAIN:

• Команда EXPLAIN EXTENDED, по видимости, ведет себя так же, как обычная EXPLAIN, но говорит серверу, что требуется произвести «обратную компиляцию» плана выполнения в команду SELECT. Чтобы просмотреть сгенерированный запрос, следует сразу после завершения EXPLAIN EXTENDED выполнить команду SHOW WARNINGS. Отображаемая при этом директива получена непосредственно из плана выполнения, а не из исходной SQL-команды, которая к этому моменту уже преобразована в некую структуру данных. В большинстве случаев исходная и восстановленная команды будут различаться. Сравнив их, вы поймете, как оптимизатор трансформировал ваш запрос. Команда EXPLAIN EXTENDED появилась в версии MySQL 5.0, а в версии MySQL 5.1 был добавлен дополнительный столбец filtered (подробнее об этом ниже).

rss