Spec-Zone.ru › MySQL 5.7

8.8.1 Оптимизация запросов с помощью EXPLAIN

Оператор EXPLAIN предоставляет информацию о том, как MySQL выполняет операторы:

  • EXPLAIN работает с операторами SELECT, DELETE, INSERT, REPLACE и UPDATE.

  • При использовании EXPLAIN с оператором, подлежащим объяснению, MySQL отображает информацию из оптимизатора о плане выполнения оператора. То есть, MySQL объясняет, как он обработает оператор, включая информацию о том, как таблицы объединяются и в каком порядке. Сведения о применении EXPLAIN для получения информации о плане выполнения см. в разделе 8.8.2, «Формат вывода EXPLAIN».

  • При использовании EXPLAIN с FOR CONNECTION connection_id вместо оператора, подлежащего объяснению, он отображает план выполнения оператора, выполняющегося в указанном соединении. См. раздел 8.8.4, «Получение информации о плане выполнения для указанного соединения».

  • Для операторов SELECT, EXPLAIN генерирует дополнительную информацию о плане выполнения, которую можно отобразить с помощью SHOW WARNINGS. См. раздел 8.8.3, «Расширенный формат вывода EXPLAIN».

  • EXPLAIN полезен для анализа запросов, связанных с разбиением таблиц. См. раздел 22.3.5, «Получение информации о разбиениях».

  • Опция FORMAT может использоваться для выбора формата вывода. TRADITIONAL представляет вывод в табличном формате. Это значение по умолчанию, если опция FORMAT отсутствует. JSON формат отображает информацию в формате JSON.

С помощью EXPLAIN вы можете определить, где следует добавить индексы в таблицы, чтобы оператор выполнялся быстрее, используя индексы для поиска строк. Вы также можете использовать EXPLAIN для проверки, объединяют ли оптимизатор таблицы в оптимальном порядке. Для того, чтобы дать подсказку оптимизатору использовать порядок объединения, соответствующий порядку указания таблиц в операторе SELECT, начните оператор с SELECT STRAIGHT_JOIN, а не только с SELECT. (См. раздел 13.2.9, «Оператор SELECT».) Однако, STRAIGHT_JOIN может помешать использованию индексов, так как он отключает преобразования полусоединений. См. раздел 8.2.2.1, «Оптимизация подзапросов, производных таблиц и ссылок на представления с помощью преобразований полусоединений».

Иногда трассировка оптимизатора предоставляет информацию, дополняющую информацию от EXPLAIN. Однако, формат и содержание трассировки оптимизатора могут меняться между версиями. Для получения подробностей см. раздел 8.15, «Отслеживание оптимизатора».

Если у вас есть проблема с тем, что индексы не используются, хотя, по вашему мнению, они должны использоваться, запустите ANALYZE TABLE для обновления статистических данных таблицы, таких как кардинальность ключей, которые могут повлиять на выбор оптимизатора. См. раздел 13.7.2.1, «Оператор ANALYZE TABLE».

Примечание

EXPLAIN также может использоваться для получения информации о столбцах в таблице. EXPLAIN tbl_name является синонимом DESCRIBE tbl_name и SHOW COLUMNS FROM tbl_name. Более подробная информация находится в разделе 13.8.1, «Оператор DESCRIBE» и разделе 13.7.5.5, «Оператор SHOW COLUMNS».

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-5.7-en/using-explain.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API