У меня есть пространственная таблица в базе данных 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();
Есть ли более эффективный способ сделать это? Я рассмотрел выполнение запланированных задач, но мне действительно нужно обновить изменения в таблице. Я немного прочитал о «одновременно», но не уверен, что это ответ.