10.8.1 Оптимизация запросов с помощью EXPLAIN
Оператор EXPLAIN предоставляет информацию о том, как MySQL выполняет операторы:
EXPLAINработает с операторамиSELECT,DELETE,INSERT,REPLACEиUPDATE.Когда
EXPLAINиспользуется с оператором, подлежащим объяснению, MySQL отображает информацию от оптимизатора о плане выполнения оператора. То есть MySQL объясняет, как бы он обработал оператор, включая информацию о том, как таблицы объединяются и в каком порядке. Подробную информацию об использованииEXPLAINдля получения информации о плане выполнения см. в разделе 10.8.2, «Формат вывода EXPLAIN».Когда
EXPLAINиспользуется сFOR CONNECTIONвместо оператора, подлежащего объяснению, он отображает план выполнения оператора, выполняющегося в указанном соединении. См. раздел 10.8.4, «Получение информации о плане выполнения для указанного соединения».connection_idДля операторов
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_nameDESCRIBE
и tbl_nameSHOW COLUMNS FROM
. Для получения дополнительной информации см. раздел 15.8.1, «Оператор DESCRIBE» и раздел 15.7.7.6, «Оператор SHOW COLUMNS». tbl_name
© 2025 Oracle
Licensed under the GPLv2 License.