REFRESH MATERIALIZED VIEW
REFRESH MATERIALIZED VIEW — заменить содержимое материализованного представления
Синтаксис
REFRESH MATERIALIZED VIEW [ CONCURRENTLY ] имя
[ WITH [ NO ] DATA ]
Описание
REFRESH MATERIALIZED VIEW
полностью заменяет содержимое материализованного представления. Эту команду можно выполнить только с правом MAINTAIN
для материализованного представления. Старое его содержимое при этом аннулируется. Если добавлено указание WITH DATA
(или нет никакого), нижележащий запрос выполняется и выдаёт новые данные, так что материализованное представление остаётся в сканируемом состоянии. Если указано WITH NO DATA
, новые данные не выдаются, и оно оказывается в несканируемом состоянии.
Указать CONCURRENTLY
вместе с WITH NO DATA
нельзя.
Параметры
CONCURRENTLY
Обновить материализованное представление, не блокируя параллельные выборки из него. Без данного параметра обновление, затрагивающее много строк, обычно задействует меньше ресурсов и выполнится быстрее, но может препятствовать чтению этого материализованного представления другими сеансами. При этом данный режим может быть быстрее при небольшом количестве строк.
Данный параметр допускается, только если в материализованном представлении есть хотя бы один индекс
UNIQUE
, построенный только по именам столбцов и включающий все строки (то есть это не должен быть индекс по выражению или индекс, содержащийWHERE
).Этот параметр нельзя использовать, когда материализованное представление ещё не наполнено.
Даже с этим параметром в один момент времени допускается только одно обновление (
REFRESH
) материализованного представления.имя
Имя (возможно, дополненное схемой) материализованного представления, подлежащего обновлению.
Примечания
Если в запросе, определяющем материализованное представление, есть предложение ORDER BY
, исходное содержимое материализованного представления будет упорядочено указанным образом; но REFRESH MATERIALIZED VIEW
не гарантирует сохранения этого порядка.
При выполнении команды REFRESH MATERIALIZED VIEW
search_path временно изменяется на pg_catalog, pg_temp
.
Примеры
Эта команда заменяет содержимое материализованного представления order_summary
, используя запрос из определения материализованного представления, и оставляет его в сканируемом состоянии:
REFRESH MATERIALIZED VIEW order_summary;
Эта команда освобождает пространство, связанное с материализованным представлением annual_statistics_basis
, и оставляет это представление в несканируемом состоянии:
REFRESH MATERIALIZED VIEW annual_statistics_basis WITH NO DATA;
Совместимость
REFRESH MATERIALIZED VIEW
— расширение PostgreSQL.