Ответ
EXPLAIN — это команда SQL, которая показывает план выполнения запроса, а не выполняет его. Это ключевой инструмент для анализа и оптимизации производительности запросов.
Основная цель: Увидеть, как СУБД будет получать данные (использует ли индексы, делает ли полное сканирование таблицы, как соединяет таблицы), чтобы найти «узкие» места.
Пример использования:
EXPLAIN SELECT id, name FROM users WHERE email = 'user@example.com';
| Ключевые элементы вывода (на примере MySQL): | Столбец | Значение | Что означает |
|---|---|---|---|
| type | const, eq_ref, ref, range, index, ALL |
Тип доступа к данным. ALL — самое дорогое (полное сканирование таблицы). |
|
| key | idx_email |
Индекс, который будет использован. NULL — индекс не используется. |
|
| rows | 1 | Оценочное количество строк, которые будет проверять движок. | |
| Extra | Using where, Using index |
Дополнительная информация. Using index — хороший знак (запрос выполнен только по индексу). |
Как использовать для оптимизации:
- Запустите
EXPLAINдля медленного запроса. - Если type = ALL и key = NULL, вероятно, не хватает индекса.
- Создайте индекс для столбцов в условиях
WHERE,JOIN,ORDER BY.CREATE INDEX idx_user_email ON users(email); - Запустите
EXPLAINснова, чтобы убедиться, что план улучшился.
Расширенные варианты:
EXPLAIN ANALYZE(PostgreSQL, MySQL 8.0.18+): Выполняет запрос и показывает фактическое время выполнения и количество строк на каждом этапе, что точнее.