В этой заметке я расскажу в чем разница между материализованным представлением и обычной вьюхой в PostgreSQL. Все начинается с того, материализованное представление физически хранит данные в базе.

Я уже рассказывал как создать обычное представление в PostgreSQL. Сейчас будем говорить об отличиях материализованных вьюх от обычных.

Как создать материализованное представление в PostgreSQL

Материализованное представление в PostgreSQL создается практически так же как и обычное вью.

Единственное отличие в ключевом слове MATERIALIZED:

CREATE MATERIALIZED VIEW view_name AS

Добавляем SELECT запрос и получаем новую вьюху.

За и против материализованных представлений в PostgreSQL

Материализованные представления физически хранят данные в базе данных.

Это значит, что доступ к данным будет намного быстрее, ведь мы уже не будем каждый раз выполнять SELECT запрос.

С другой стороны, ты теряешь преимущество мгновенного обновления данных и можешь оказаться в ситуации, когда ты получил неактуальные данные.

Чтобы обновить материализованное представление (вьюху), выполняют такой запрос:

REFRESH MATERIALIZED VIEW view_name;

Этот запрос эквивалентен инвалидации кеша. Он синхронизирует материализованное представление с актуальным состоянием базы данных PostgreSQL.