刷新或创建物化视图? Postgres

Posted

技术标签:

【中文标题】刷新或创建物化视图? Postgres【英文标题】:Refresh or Create Materialized view? Postgres 【发布时间】:2020-05-19 19:32:33 【问题描述】:

我有一个物化视图,当我们的数据管道进行完全刷新时,它有时会被删除。有没有办法在查询中包含一些逻辑以刷新它是否存在,如果不存在,则创建它?

类似的东西

refresh materialized view my_mat_view

if my_mat_view does not exist then execute the code below

create materialized view my_mat_view as select * from table

【问题讨论】:

“有时会被删除”。这听起来像是一个应该解决的问题。 是的,我同意,这是我们重组管道时的临时修复 【参考方案1】:

一种选择是使用带有无数据选项的create .. if not exists,然后无条件运行refresh

create materialized view if not exists my_mat_view 
as 
select * 
from table
with no data; --<< don't populate the data just yet

-- the mview will exists now, no matter what
refresh materialized view my_mat_view;

【讨论】:

以上是关于刷新或创建物化视图? Postgres的主要内容,如果未能解决你的问题,请参考以下文章

Postgres 物化视图或 CREATE TABLE AS 如果不增量更新?

刷新物化视图:并发、事务行为

PG 物化视图

oracle物化视图不会自动更新是怎么回事

刷新物化视图时,索引是不是也会自动刷新?

在Postgres中的物化视图上创建主键