Materialized views
◈ 2 cardsCache an expensive query result on disk.
A cached view
A plain view recomputes every time. A materialized view stores the result, trading freshness for speed — ideal for expensive aggregations read far more often than the data changes:
CREATE MATERIALIZED VIEW genre_counts AS
SELECT genre, count(*) AS n FROM books GROUP BY genre;
It won't update on its own — you refresh it when you want new numbers:
REFRESH MATERIALIZED VIEW genre_counts;