tl; dr:有什么方法可以在postgres中定义实例化视图,而不必立即填充数据,而仅在刷新时?
背景:我有一个flyway可重复脚本,该脚本创建了一个物化视图,对大量数据进行了大量聚合。是否有可能创建视图定义,以便将其映射到休眠实体而没有任何错误,但是它可以为空并在刷新时填充数据。它将每天晚上刷新一次,所以我不想影响应用程序的启动时间。
堆栈:postgres 11,spring boot 2,hibernate 5
答案 0 :(得分:2)
使用WITH NO DATA
选项:
create materialized view bla_bla
as
select *
from foo_foo
WITH NO DATA;
引用the manual:
WITH [ NO ] DATA
此子句指定在创建时是否应填充实例化视图。否则,将在使用REFRESH MATERIALIZED VIEW之前将物化视图标记为无法扫描,并且无法查询
但是,这意味着在刷新实例化视图之前进行任何尝试都会导致错误,而不仅仅是空结果。