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.