В этой заметке я расскажу в чем разница между материализованным представлением и обычной вьюхой в PostgreSQL. Все начинается с того, материализованное представление физически хранит данные в базе.
Я уже рассказывал как создать обычное представление в PostgreSQL. Сейчас будем говорить об отличиях материализованных вьюх от обычных.
Как создать материализованное представление в PostgreSQL
Материализованное представление в PostgreSQL создается практически так же как и обычное вью.
Единственное отличие в ключевом слове MATERIALIZED
:
CREATE MATERIALIZED VIEW view_name AS
Добавляем SELECT запрос и получаем новую вьюху.
За и против материализованных представлений в PostgreSQL
Материализованные представления физически хранят данные в базе данных.
Это значит, что доступ к данным будет намного быстрее, ведь мы уже не будем каждый раз выполнять SELECT запрос.
С другой стороны, ты теряешь преимущество мгновенного обновления данных и можешь оказаться в ситуации, когда ты получил неактуальные данные.
Чтобы обновить материализованное представление (вьюху), выполняют такой запрос:
REFRESH MATERIALIZED VIEW view_name;
Этот запрос эквивалентен инвалидации кеша. Он синхронизирует материализованное представление с актуальным состоянием базы данных PostgreSQL.