推迟物化视图的创建

时间:2019-09-19 11:07:07

标签: postgresql hibernate

tl; dr:有什么方法可以在postgres中定义实例化视图,而不必立即填充数据,而仅在刷新时?

背景:我有一个flyway可重复脚本,该脚本创建了一个物化视图,对大量数据进行了大量聚合。是否有可能创建视图定义,以便将其映射到休眠实体而没有任何错误,但是它可以为空并在刷新时填充数据。它将每天晚上刷新一次,所以我不想影响应用程序的启动时间。

堆栈:postgres 11,spring boot 2,hibernate 5

1 个答案:

答案 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之前将物化视图标记为无法扫描,并且无法查询

但是,这意味着在刷新实例化视图之前进行任何尝试都会导致错误,而不仅仅是空结果。