在 Postgres 上参数化物化视图的好方法是什么?

Ran*_*ize 5 postgresql materialized-view

例如,给出这样的物化视图(Postgres 10.3):

create materialized view my_view as
    select * from my_table where sell_date < '2018-03-01';
Run Code Online (Sandbox Code Playgroud)

sell_date比较值('2018-03-01')有时可以改变,但我想,以避免掉落,每次重新创建物化视图。我想出的唯一想法是使用带有一些元数据值的外部表,例如所需的日期:

create materialized view my_view as
    select * from my_table where sell_date < 
        (select original_sell_date from some_metadata_table);
Run Code Online (Sandbox Code Playgroud)

有没有其他方法可以解决 Postgres 上物化视图的这种限制?

我当前解决方案的问题之一是您可以有两个或多个使用相同值的物化视图,但它们可能需要在某些点使用不同的值。在这种情况下,需要复制元数据表。

Eva*_*oll 2

有以下三种方式,

  • 在保存输入的表中使用外部数据。
  • 使 sell_date 成为当前时间的函数。例如AND sell_date > current_time - '5 days'
  • MATERIALIZED VIEW如果没有任何东西依赖于它,则删除并重新加载事务中同名的新临时文件。