Как долгосрочно «кешировать» результаты в Postgres?
Postgres 9.5
Есть тяжелый запрос. Но данные в нем не обязательно должны быть абсолютно свежими.
Про Materialized view знаю, но судя по всему, это не то, что мне нужно.
Я бы хотел выполнить запрос, даже если он займет несколько секунд,а после этого сохранить его результаты куда-то, где они будут доступны, пока я не решу их обновлять.
Это почти Materialized view, но дело в том, что там есть переменные, и делать MW для со всеми вариациями этих переменных нет смысла. Переменная - это, скажем, сочетание id двух разных пользователей. Делать MW для всех вариаций всех существующих пользователей - бессмысленно. А вот сохранить результаты при первом обращении и показывать их же до истечения какого-нибудь триггера или срока - это то, что надо. Есть какое-то простое решение без необходимости написания кучи триггер-функций?
на сколько мне известно, его нельзя частично обновить - только целиком. А мне нужно обновлять каждый кусочек отдельно, так как подавляющее большинство из них не пригодится.
hbrmdc: ну тогда единственный путь — делать отдельную агрегационную таблицу и время от времени её обновлять. Ну или по триггеру основной таблицу с пользователями. По крайней мере, я так себе делал, что себя вполне оправдывало