7.2.1. Optimizing Queries with EXPLAIN
Перевод главы документации MySQL.Комманда
EXPLAIN
может использоваться или как способ получить информацию о том, как MySQL выполняет запрос, или как синоним комманды DESCRIBE
:-
Когда мы ставим ключевое слово
EXPLAIN
перед выражениемSELECT
, MySQL отображает информацию о плане выполнения запроса из оптимизатора. То есть MySQL объясняет ход выполнения запроса, включая информацию о том, какие таблицы объединяются и в каком порядке. Для получения дополнительной информации можно использоватьEXPLAIN EXTENDED
.
Следующая секция поясняет, как использоватьEXPLAIN
иEXPLAIN EXTENDED
, чтобы получить информацию о плане выполнения запроса. EXPLAIN PARTITIONS
доступен начиная с версии MySQL 5.1.5. Эта комманда полезна только, когда проверяет запросы, касающиеся partitioned (раздельных? секцированных?) таблиц. Смотреть детально Section 17.3.4, “Obtaining Information About Partitions”.
-
EXPLAIN
синоним коммандыtbl_name
DESCRIBE
tbl_name
SHOW COLUMNS FROM
. Более подробную информацию оtbl_name
DESCRIBE
иSHOW COLUMNS
можно посмотреть здесь Section 12.8.1, “DESCRIBE
Syntax” и здесь Section 12.7.5.6, “SHOW COLUMNS
Syntax”.
EXPLAIN
вы можете увидеть где нужно добавить индексы в таблицах, так чтобы запрос выполнялся быстрее использую индексы для нахождения строк. Можно также использовать EXPLAIN
для того, чтобы проверить объединяет ли оптимизатор таблицы в оптимальном порядке. Чтобы подсказать оптимизатору использовать порядок объединения соответствующий порядку, в котором таблицы перечислены в запросе SELECT
нужно перед ключевым словом SELECT
указать STRAIGHT_JOIN.
(Смотреть
Section 12.2.8, “SELECT
Syntax”.)
Если у вас есть проблемы с индексами, которые не используются, когда вы считаете что должны использоваться, запустите
ANALYZE
TABLE
, чтобы обновить статистику таблицы, такую как количество ключей, которые влияют на выбор, который делает оптимизатор. См.
Section 12.7.2.1, “ANALYZE TABLE
Syntax”.