Чем EXPLAIN отличается от EXPLAIN ANALYZE в Postgres-подобной СУБД?

AEXPLAIN физически выполняет запрос и показывает фактические времена шагов, а EXPLAIN ANALYZE строит только план без выполнения
BEXPLAIN показывает план без выполнения запроса, а EXPLAIN ANALYZE выполняет запрос и добавляет фактические времена и количество строк
CОба варианта строят только план: ни EXPLAIN, ни EXPLAIN ANALYZE не запускают запрос на исполнение и не возвращают замеров
DОба варианта всегда исполняют запрос: EXPLAIN и EXPLAIN ANALYZE отличаются только форматом вывода полученного плана
Правильный ответ. EXPLAIN — план, EXPLAIN ANALYZE — план плюс фактические измерения по запросу.

Разбор

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

Можно заниматься бесплатно

Готовим вопросы…

Три вопроса по теме этой страницы, с объяснениями.

Продолжить в браузере

Ещё вопросы по теме «EXPLAIN и оптимизация»