触发刷新基于同一表的多个实例化视图

时间:2019-06-07 22:58:36

标签: postgresql triggers postgis materialized-views

我在Postgres数据库中有一个空间表,从中可以创建三个单独的实例化视图(每个视图均基于特定的空间查询)。我想创建触发器函数来刷新有关更新,插入和删除的每个实例化视图。

我创建了三个独立的函数和触发器,但是性能(出乎意料的)令人震惊。如果我在更新,插入或删除上运行单个触发器,则效果很好。以下是我正在使用的示例函数和触发器:

CREATE OR REPLACE FUNCTION refresh_mvw_taxa_hex5km()   
RETURNS trigger 
AS $BODY$ 
  BEGIN 
    refresh materialized view mvw_taxa_hex5km; 
    return new; 
  END; 
$BODY$ LANGUAGE plpgsql; 


CREATE TRIGGER refresh_mvw_taxa_hex5km   
AFTER INSERT OR UPDATE OR DELETE ON occurrence   
FOR EACH STATEMENT   
  EXECUTE PROCEDURE refresh_mvw_taxa_hex5km();

有没有更有效的方法?我考虑过运行预定的任务,但是我确实需要刷新表的更改。我已经阅读了一些有关“同时”的内容,但不确定是否是答案。

0 个答案:

没有答案