Вопрос проверяет знание возможностей PostgreSQL и понимание различий между DML и DDL операциями.
В PostgreSQL EXPLAIN ANALYZE предназначен в первую очередь для запросов чтения и изменения данных, а не для DDL. Для большинства DDL-операций он не поддерживается. Такие команды не имеют плана выполнения в классическом смысле. Поэтому EXPLAIN ANALYZE с DDL либо не работает, либо ведёт себя ограниченно. Анализ DDL обычно делают другими способами.
EXPLAIN ANALYZE — мощный инструмент анализа запросов, но его область применения ограничена типом операций.
EXPLAIN ANALYZE — это команда PostgreSQL, которая выполняет запрос и показывает фактический план выполнения с реальными метриками.
Изначально он рассчитан на:
SELECT;
INSERT;
UPDATE;
DELETE.
Эти операции:
имеют план выполнения;
проходят через оптимизатор запросов;
используют индексы и join-алгоритмы.
DDL-команды (CREATE, ALTER, DROP):
изменяют структуру схемы;
не возвращают набор строк;
не используют план выполнения в привычном виде.
Поэтому:
оптимизатор не строит для них execution plan;
EXPLAIN ANALYZE к ним неприменим напрямую.
В большинстве случаев:
EXPLAIN ANALYZE с DDL завершится ошибкой;
либо команда будет выполнена без полезного плана.
Это ожидаемое поведение.
Для оценки DDL используют:
логи выполнения;
auto_explain (ограниченно);
тестирование на staging;
замеры времени выполнения вручную.
EXPLAIN ANALYZE предназначен для анализа DML-запросов и не подходит для DDL-операций. Для оценки влияния DDL используют другие инструменты и практики.