В чём разница между EXPLAIN и EXPLAIN ANALYZE?

Планирование выполнения SQL-запроса EXPLAIN выводит план выполнения, не запуская запрос EXPLAIN ANALYZE фактически выполняет запрос Показывает реальное время выполнения и количество строк EXPLAIN ANALYZE требует…

Короткий ответ

Что ответить на собеседовании

Планирование выполнения SQL-запроса EXPLAIN выводит план выполнения, не запуская запрос EXPLAIN ANALYZE фактически выполняет запрос Показывает реальное время выполнения и количество строк EXPLAIN ANALYZE требует больше ресурсов Аналитики проектируют решения, а EXPLAIN помогает проверить нагрузку Для оптимизации применяют EXPLAIN ANALYZE

Подробный разбор

Ответ с пояснениями

В чём разница между EXPLAIN и EXPLAIN ANALYZE?

  • Планирование выполнения SQL-запроса
  • EXPLAIN выводит план выполнения, не запуская запрос
  • EXPLAIN ANALYZE фактически выполняет запрос
  • Показывает реальное время выполнения и количество строк
  • EXPLAIN ANALYZE требует больше ресурсов
  • Аналитики проектируют решения, а EXPLAIN помогает проверить нагрузку
  • Для оптимизации применяют EXPLAIN ANALYZE

Итог: EXPLAIN показывает прогноз, а EXPLAIN ANALYZE формирует реальный профиль выполнения.

Подробный ответ

Основной ответ

EXPLAIN и EXPLAIN ANALYZE — SQL-команды для изучения планов выполнения запросов. При этом они отличаются объёмом получаемой информации и влиянием на систему. EXPLAIN отображает предполагаемый план оптимизатора без фактического выполнения запроса, а EXPLAIN ANALYZE сначала формирует этот план, затем запускает запрос и собирает реальные показатели времени и затрат на каждом этапе.

Ключевые моменты

  • EXPLAIN показывает лишь прогнозируемый план и оценочные параметры, включая estimated cost, rows и width. Это позволяет быстро понять, каким образом база данных собирается выполнить запрос, не запуская его.
  • EXPLAIN ANALYZE действительно выполняет запрос и фиксирует фактические метрики — продолжительность выполнения и число обработанных строк. Благодаря этому можно увидеть разницу между расчётами оптимизатора и реальной производительностью.
  • Применение EXPLAIN ANALYZE заметно увеличивает затраты времени и ресурсов. Это особенно существенно для тяжёлых запросов и write-операций, поскольку запрос исполняется в действительности. Поэтому команду используют для детальной оптимизации и профилирования.

В PostgreSQL, в частности начиная с версии 14+, это имеет особое значение: EXPLAIN ANALYZE позволяет находить узкие места в индексах, выборках и join-операциях, предоставляя показатели latency и buffer usage.

Практический контекст

В рабочих проектах обычно начинают с EXPLAIN, чтобы определить подходящую стратегию индексов и структуру запроса. Затем применяют EXPLAIN ANALYZE для проверки фактической производительности и поиска неожиданных расхождений — например, когда реальные размеры выборок существенно не совпадают с прогнозами. Такой порядок считается стандартным способом оптимизации запросов в production базах данных.

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку