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