четверг, 17 ноября 2011 г.

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”.