Spec-Zone.ru › MySQL 8.4

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

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

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

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

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

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

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

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

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

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

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

Примечание

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

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

Spec-Zone.ru

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