Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
We are not interested in implementing hints in the exact ways they are commonly implemented on other databases.
оптимизатор может делать индексы по любым промежуточным резалтсетам
То же самое получается и здесь. С той лишь разницей что таблица эта — временная.
Оптимизатор ничего такого сам по себе никогда не делает.Возможно оптимизатор PostgreSQL (в текущих версиях) этого не делает, но другие делают (и, вероятно, он тоже будет).
Материализация CTE и материализованное представление — это две совсем разные штуки.В чём именно состоит принципиальная разница? И там, и там получается кортеж, которых сохраняется (там, куда помещается). Вы, вероятно, слишком узко рассматриваете понятие «временная таблица».
Как вариант, чтобы работало быстро в 12-й версии, и возможно медленно но работало в 11-й.
Но разработчики PG давно выбрали вариант с частью синтаксиса, пусть уж лучше однообразно будет (кстати у oracle materialize не единственное что можно сделать с подзапросом, в т.ч. из view, что на мой взгляд иногда помогает весьма гибко направлять оптимизатор не создавая новые view).
Важные изменения в работе CTE в PostgreSQL 12