Вопросы к Поиску с Алисой
Разница между MATERIALIZED и NOT MATERIALIZED в PostgreSQL заключается в поведении оптимизатора при обработке общих табличных выражений (CTE). knowledge.enterprisedb.com roquebase.wordpress.com
MATERIALIZED заставляет оптимизатор сохранять результат работы CTE во временную таблицу для переиспользования в дальнейшем. roquebase.wordpress.com Это может быть полезно, например, когда предложение CTE применяется как преграда для оптимизатора, не позволяющая ему выбрать неудачный план. postgrespro.ru
NOT MATERIALIZED выполняет принудительный инлайнинг CTE, то есть его свёртывание в основной запрос. roquebase.wordpress.com В результате CTE может вычисляться неоднократно, если основной запрос обращается к нему несколько раз. postgrespro.ru Однако если при каждом таком обращении требуются лишь отдельные строки из всего результата CTE, указание NOT MATERIALIZED может оказаться выгодным. postgrespro.ru