Отложить создание материализованного представления - PullRequest
0 голосов
/ 19 сентября 2019

tl; dr: есть ли способ определить материализованное представление в postgres, не заполняя его данными сразу, а только при обновлении?

Справочная информация: у меня есть повторяемый сценарий, который создает материализованное представление с большой агрегацией для огромного куска данных.Есть ли возможность создать определение представления, чтобы оно отображалось в спящий объект без каких-либо ошибок, но оно может быть пустым и заполняться данными при обновлении.Он обновляется один раз в день ночью, поэтому я не хочу влиять на время запуска приложения.

Стек: postgres 11, весенняя загрузка 2, hibernate 5

1 Ответ

2 голосов
/ 19 сентября 2019

Используйте параметр WITH NO DATA:

create materialized view bla_bla
as 
select *
from foo_foo
WITH NO DATA;

Цитата из Руководство :

WITH [ NO ] DATA

Этот пунктуказывает, следует ли заполнять материализованное представление во время создания.В противном случае материализованное представление будет помечено как не подлежащее сканированию и не может быть запрошено до тех пор, пока не будет использован ОБРАТНЫЙ МАТЕРИАЛИЗОВАННЫЙ ВИД

Однако это означает, что любая попытка получить доступ к этому материализованному представлению до его обновления приведет к ошибке,а не просто пустой результат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...