Ответ
EXPLAIN
— это команда в SQL, которая возвращает план выполнения запроса, сгенерированный оптимизатором базы данных. Она не выполняет сам запрос, а показывает, как СУБД собирается его выполнить.
EXPLAIN
помогает понять:
- Порядок и метод доступа к таблицам: Будет ли это полное сканирование таблицы (
Seq Scan
), сканирование по индексу (Index Scan
) или другой метод. - Используемые индексы: Какие именно индексы будут задействованы для ускорения выборки.
- Операции соединения (Joins): Какой алгоритм будет использован для соединения таблиц (например,
Nested Loop
,Hash Join
,Merge Join
). - Оценочная стоимость (Cost): Условная оценка ресурсов, необходимых для выполнения запроса. Состоит из стоимости запуска и общей стоимости. Это не время, а абстрактные единицы.
- Оценочное количество строк (Rows): Предполагаемое количество строк, которое вернет каждая операция.
Пример для PostgreSQL:
EXPLAIN SELECT * FROM users WHERE id = 42;
Результат:
QUERY PLAN
--------------------------------------------------------------
Index Scan using users_pkey on users (cost=0.15..8.17 rows=1 width=36)
Index Cond: (id = 42)
Этот план показывает, что будет использован индекс users_pkey
, что является очень эффективным.
EXPLAIN ANALYZE
Для получения более точной информации используется EXPLAIN ANALYZE
. Эта команда выполняет запрос и показывает не только план, но и реальное время выполнения и количество строк на каждом шаге. Это мощный инструмент для отладки медленных запросов.