СОЗДАТЬ МАТЕРИАЛИЗОВАННОЕ ПРЕДСТАВЛЕНИЕ

Определяет новое материализованное представление.

Синтаксис

CREATE MATERIALIZED VIEW [ IF  NOT EXISTS ] <table_name>
    [ (<column_name> [, ...] ) ]
    [ USING <method> ]
    [ WITH ( <storage_parameter> [= <value>] [, ... ] ) ]
    [ TABLESPACE <tablespace_name> ]
    AS <query>
    [ WITH [ NO ] DATA ]
    [DISTRIBUTED {| BY <column> [<opclass>], [ ... ] | RANDOMLY | REPLICATED }]

Описание

CREATE MATERIALIZED VIEW определяет материализованное представление запроса. Запрос выполняется и используется для заполнения представления в момент выполнения команды (если не указано WITH NO DATA) и может быть обновлён позже с помощью команды REFRESH MATERIALIZED VIEW.

CREATE MATERIALIZED VIEW похож на CREATE TABLE AS, за исключением того, что он также сохраняет запрос, использованный для инициализации представления, чтобы его можно было при необходимости обновить в дальнейшем. Для обновления данных материализованного представления используйте команду REFRESH MATERIALIZED VIEW. Материализованное представление имеет многие свойства таблицы, однако временные материализованные представления не поддерживаются.

Параметры

  • IF NOT EXISTS
    • Не выдавать ошибку, если материализованное представление с таким именем уже существует. В этом случае будет выдано уведомление. Обратите внимание, что нет гарантии, что существующее материализованное представление будет аналогично тому, которое должно было быть создано.
  • table_name
    • Имя (при необходимости с указанием схемы) создаваемого материализованного представления.
  • column_name
    • Имя столбца в новом материализованном представлении. Имена столбцов назначаются по позиции. Первое имя столбца присваивается первому столбцу результата запроса, следующее — второму и так далее. Если имя столбца не указано, оно берётся из имён выходных столбцов запроса.
  • USING method
    • Этот необязательный параметр задаёт метод доступа к таблице, который будет использоваться для хранения содержимого нового материализованного представления; метод должен быть методом доступа типа TABLE. Если этот параметр не указан, для нового материализованного представления выбирается метод доступа по умолчанию. Дополнительную информацию см. в default_table_access_method.
  • WITH ( storage_parameter [= value] [, ... ] )
    • Этот параметр задаёт дополнительные параметры хранения для материализованного представления. Все параметры, поддерживаемые для CREATE TABLE, также поддерживаются и для CREATE MATERIALIZED VIEW. Дополнительную информацию см. в разделе CREATE TABLE.
  • TABLESPACE tablespace_name
    • tablespace_name — имя табличного пространства, в котором будет создано новое материализованное представление. Если параметр не указан, используется значение конфигурационного параметра сервера default_tablespace.
  • query
    • Команда SELECT, TABLE или VALUES. Этот запрос выполняется в условиях ограничений безопасности; в частности, вызовы функций, которые сами создают временные таблицы, завершатся ошибкой.
  • WITH [ NO ] DATA
    • Этот параметр определяет, следует ли заполнять материализованное представление данными во время создания. WITH DATA — значение по умолчанию, представление заполняется данными. При указании WITH NO DATA материализованное представление не заполняется данными, помечается как непригодное для сканирования и не может быть запрошено до тех пор, пока команда REFRESH MATERIALIZED VIEW не заполнит его данными.
  • DISTRIBUTED BY (column [opclass], [ ... ] )
  • DISTRIBUTED RANDOMLY
  • DISTRIBUTED REPLICATED
    • Используется для объявления политики распределения данных материализованного представления в базе данных. За информацией о политике распределения таблиц обратитесь к разделу CREATE TABLE.

Примечания

Материализованные представления доступны только для чтения. Система не позволит выполнять INSERT, UPDATE или DELETE над материализованным представлением. Используйте команду REFRESH MATERIALIZED VIEW для обновления данных материализованного представления.

Если вы хотите, чтобы данные были упорядочены при создании, вы должны использовать предложение ORDER BY в запросе материализованного представления. Однако, если запрос материализованного представления содержит ORDER BY или SORT, порядок или сортировка данных не гарантируются при выполнении SELECT над этим представлением.

Примеры

Создание представления, содержащего все комедии:

CREATE MATERIALIZED VIEW comedies AS SELECT * FROM films 
WHERE kind = 'comedy';

Это создаст представление, содержащее столбцы, присутствующие в таблице film на момент создания представления. Хотя для создания материализованного представления использовался символ *, столбцы, добавленные позже в таблицу, не будут частью этого представления.

Создание представления, содержащего десять самых популярных имён новорождённых:

CREATE MATERIALIZED VIEW topten AS SELECT name, rank, gender, year FROM 
names, rank WHERE rank < '11' AND names.id=rank.id;

Совместимость

CREATE MATERIALIZED VIEW является расширением Database стандарта SQL.

Смотрите также

SELECT, VALUES, CREATE VIEW, ALTER MATERIALIZED VIEW, DROP MATERIALIZED VIEW, REFRESH MATERIALIZED VIEW