В чем разница между EXPLAIN и EXPLAIN ANALYZE в PostgreSQL

«В чем разница между EXPLAIN и EXPLAIN ANALYZE в PostgreSQL» — вопрос из категории Базы данных, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

EXPLAIN показывает план выполнения запроса, который оптимизатор PostgreSQL собирается использовать. Это полезно для анализа потенциальных узких мест, но не включает реальные метрики выполнения.

EXPLAIN ANALYZE не только показывает план, но и выполняет запрос, добавляя фактические данные: время выполнения, количество строк, затраченные ресурсы. Это точнее, но может влиять на производительность, так как запрос реально выполняется.

Пример:

EXPLAIN SELECT * FROM users WHERE age > 30;
-- Покажет только предполагаемый план

EXPLAIN ANALYZE SELECT * FROM users WHERE age > 30;
-- Покажет план + фактические метрики выполнения