MyTetra Share
Делитесь знаниями!
Создать материализованное представление в PostgreSQL
Время создания: 19.07.2018 14:55
Автор: br0ke
Текстовые метки: postgresql, postgres, postgre, sql, view, materialized, materialized view, create
Раздел: Информационные технологии - Базы данных - PostgreSQL
Запись: and-semakin/mytetra_data/master/base/1531994137rxbwsj0iwx/text.html на raw.githubusercontent.com

Материализованное представление -- это промежуточное звено между таблицей (TABLE) и представлением (VIEW). Оно наполняется и обновляется с помощью SELECT-запроса, как обычное представление, но хранится на диске, как таблицы. Благодаря этому оно может иметь индексы и все остальные свойства таблиц. Изменение данных в материализованном представлении невозможно, поддерживается только чтение.


Появилось в PostgreSQL 9.3.


Создать материализованное представление:


CREATE MATERIALIZED VIEW [ IF NOT EXISTS ] имя_таблицы

[ (имя_столбца [, ...] ) ]

[ WITH ( параметр_хранения [= значение] [, ... ] ) ]

[ TABLESPACE табл_пространство ]

AS запрос

[ WITH [ NO ] DATA ]


Пример:


CREATE MATERIALIZED VIEW full_features_history
AS
SELECT
*
FROM
(
SELECT
id, geog, layer, username, action_type, parent_id, sys_period
FROM
features
WHERE
layer != 'pano'

UNION ALL

SELECT
id, geog, layer, username, action_type, parent_id, sys_period
FROM
features_history
WHERE
layer != 'pano'
) AS combined
ORDER BY sys_period DESC;


Обновление данных в материализованном представлении:


REFRESH MATERIALIZED VIEW [ CONCURRENTLY ] имя

[ WITH [ NO ] DATA ]


Пример:


REFRESH MATERIALIZED VIEW full_features_history;


Если указать WITH NO DATA, то получить данные из представления будет нельзя до тех пор, пока не будет произведено обновление с данными.

Так же в этом разделе:
 
MyTetra Share v.0.59
Яндекс индекс цитирования