CREATE MATERIALIZED VIEW
CREATE MATERIALIZED VIEW — 定义一个新物化视图
大纲
CREATE MATERIALIZED VIEW [ IF NOT EXISTS ]table_name[ (column_name[, ...] ) ] [ 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,不过它还会记住用于初始化该视图的查询,以便后续按需刷新。物化视图具有很多与表相同的属性,但不支持临时物化视图,也不支持自动生成 OID。
参数
IF NOT EXISTS如果已存在同名物化视图,则不要抛出错误。在这种情况下会发出一条通知。请注意,不能保证现有的物化视图与原本会创建出来的那个物化视图有任何相似之处。
table_name要创建的物化视图名称(可以带模式限定)。该名称必须与同一模式中的任何其他关系(表、序列、索引、视图、物化视图或外部表)的名称不同。
column_name新物化视图中的列名。如果没有提供列名,则采用查询输出列的名称。
WITH (storage_parameter[=value] [, ... ] )该子句为新物化视图指定可选的存储参数;更多信息见存储参数。凡是
CREATE TABLE支持的参数,CREATE MATERIALIZED VIEW也同样支持,但OIDS除外。更多信息见CREATE TABLE。TABLESPACEtablespace_nametablespace_name是创建新物化视图所在表空间的名称。如果未指定,则参考default_tablespace。query一个SELECT、TABLE或VALUES命令。该查询将在一种安全受限的操作中运行。特别是,调用那些自身会创建临时表的函数将会失败。
WITH [ NO ] DATA该子句指定是否在创建时填充物化视图。如果不填充,则该物化视图会被标记为不可扫描,在使用
REFRESH MATERIALIZED VIEW之前不能查询。
兼容性
CREATE MATERIALIZED VIEW是一种
PostgreSQL扩展。