CREATE MATERIALIZED VIEW — 定义一个新的物化视图
CREATE MATERIALIZED VIEW [ IF NOT EXISTS ]table_name
[ (column_name
[, ...] ) ] [ USINGmethod
] [ WITH (storage_parameter
[=value
] [, ... ] ) ] [ TABLESPACEtablespace_name
] ASquery
[ WITH [ NO ] DATA ]
CREATE MATERIALIZED VIEW
定义查询的物化视图。该查询在发出命令时执行并用于填充视图(除非使用 WITH NO DATA
),并且稍后可以使用 REFRESH MATERIALIZED VIEW
刷新。
CREATE MATERIALIZED VIEW
类似于 CREATE TABLE AS
,不同之处在于它还记住用于初始化视图的查询,以便稍后可以根据需要刷新视图。物化视图具有与表相同的许多特性,但不支持临时物化视图。
CREATE MATERIALIZED VIEW
要求对用于物化视图的模式具有 CREATE
权限。
IF NOT EXISTS
如果已存在同名的物化视图,则不抛出错误。此情况下会发出通知。请注意,无法保证现有的物化视图类似于要创建的物化视图。
table_name
要创建的物化视图的名称(可选,含模式限定符)。此名称必须不同于同一模式中的任何其他关系(表、序列、索引、视图、物化视图或外部表)的名称。
column_name
新建物化视图中列的名称。如果未提供列名称,则从查询的输出列名称中获取。
USING method
此可选子句指定用于存储新物化视图中内容的表访问方法;此方法必须是类型为 TABLE
的访问方法。有关更多信息,请参见第 61 章。如果未指定此选项,则为新物化视图选择默认表访问方法。有关更多信息,请参见default_table_access_method。
WITH ( storage_parameter
[= value
] [, ... ] )
此子句指定新物化视图的可选存储参数;有关更多信息,请参见存储参数,在CREATE TABLE文档中。所有受 CREATE TABLE
支持的参数也受 CREATE MATERIALIZED VIEW
支持。有关更多信息,请参见CREATE TABLE。
TABLESPACE tablespace_name
tablespace_name
是要从中创建新建物化视图的表空间的名称。如果未指定,则会查询default_tablespace。
query
SELECT
、TABLE
或VALUES
命令。此查询将在安全受限操作中运行;尤其是,调用会创建临时表的函数将会失败。另外,在查询运行期间,search_path会暂时变为 pg_catalog, pg_temp
。
WITH [ NO ] DATA
此子句指定在创建时是否填充物化视图。如果没有填充,则将物化视图标记为不可扫描,且只有在使用了 REFRESH MATERIALIZED VIEW
后才能查询。
CREATE MATERIALIZED VIEW
是一个 PostgreSQL 扩展。