postgresql - 推迟物化 View 的创建

标签 postgresql hibernate

tl;dr:有什么方法可以在 postgres 中定义物化 View 而不立即用数据填充它,而只是在刷新时?

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

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

最佳答案

使用 WITH NO DATA 选项:

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

引自 the manual :

WITH [ NO ] DATA

This clause specifies whether or not the materialized view should be populated at creation time. If not, the materialized view will be flagged as unscannable and cannot be queried until REFRESH MATERIALIZED VIEW is used

然而,这意味着在刷新之前访问该物化 View 的任何尝试都将导致错误,而不仅仅是一个空结果。

关于postgresql - 推迟物化 View 的创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58009632/

相关文章:

sql - PostgreSQL函数中sql语言和plpgsql语言的区别

java - 如何在 Hibernate 上比较同一实体的延迟加载对象?

java - 注入(inject) Autowiring 的依赖项失败;嵌套异常是 java.lang.NoClassDefFoundError : org/hibernate/cfg/Configuration

hibernate - 使用 Hibernate 3.6.3 和 JPA 2.0 创建类型化查询时出现 AbstractMethodError

java - Hibernate重建DB表

postgresql - 优化/索引时区查询

javascript - 如何使用 NodeJS 为 Sequelize 模型添加默认值?

database - 我可以要求 Postgresql 忽略事务中的错误吗

sql - 包含大量更新和 PostgreSQL 的流

java - 不要在Web应用程序spring mvc + jpa + postgreSQL中获取所有用户对象