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 的访问方法。更多信息请参见 Chapter 62。如果没有指定此选项,则会为新物化视图选择默认的表访问方法。更多信息请参见 default_table_access_method。
WITH ( storage_parameter [= value] [, ... ] ) 这个子句为新物化视图指定可选的存储参数;更多信息请参见 CREATE TABLE 文档中的 Storage Parameters。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 的扩展。