#sql #database #postgresql
#sql #База данных #postgresql
Вопрос:
Проблема с материализованным представлением psql при обновлении запроса выполняется для полной таблицы, я попытался оптимизировать его ниже, хотел бы знать, даст ли это мне значительное улучшение по сравнению с материализованным представлением, а также как его можно улучшить в дальнейшем?
В приведенном ниже примере есть таблица book_total, в которой хранится общая сумма всех цен на книги для категории
CREATE OR REPLACE FUNCTION count_price() RETURNS trigger LANGUAGE plpgsql SECURITY DEFINER AS $ BEGIN CASE TG_OP WHEN 'DELETE' THEN insert into books_total(id, total) SELECT number as id, SUM(price) as total from books where number = old.number GROUP BY number; ELSE insert into books_total(id, total) SELECT number as id, SUM(price) as total from books where number = new.number GROUP BY number; END CASE; RETURN NULL; END; $; CREATE CONSTRAINT TRIGGER count_price_trigger AFTER INSERT OR DELETE ON books FOR EACH ROW EXECUTE PROCEDURE count_price(); create table books ( id serial primary key , number int not null, price int not null ) create table books_total ( id int not null , price int not null ) insert into books values( 1, 1, 5 )