Вопросы к Поиску с Алисой
Разница между материализацией и не материализацией подзапросов WITH в PostgreSQL заключается в том, как оптимизатор обрабатывает их. docs.arenadata.io
При материализации подзапрос вычисляется отдельно от родительского запроса, что может быть полезно, если подзапрос содержит ресурсозатратные вычисления. docs.arenadata.io По умолчанию материализуются подзапросы из рекурсивных запросов CTE и те, на которые ссылаются более одного раза. docs.arenadata.io
При не материализации подзапрос объединяется с родительским запросом, что может быть эффективнее, если каждое использование подзапроса требует только небольшой части полного вывода. postgrespro.ru docs.tantorlabs.ru Однако в этом случае возникает риск многократного вычисления подзапроса. postgrespro.ru
Для принудительного выбора между этими вариантами можно использовать модификатор MATERIALIZED для материализации и NOT MATERIALIZED для не материализации. postgrespro.com docs.arenadata.io