定义一个新的物化视图。
语法
CREATE MATERIALIZED VIEW name
[build clause][create mv refresh] AS subquery
其中build_clause是:
BUILD {IMMEDIATE | DEFERRED}
其中create mv refresh是:
REFRESH [COMPLETE] [ON DEMAND]
参数
参数名称 | 描述 |
---|
参数名称 | 描述 |
---|---|
name | 要创建的视图名称(可以采用模式限定的方式引用)。 |
subquery | select语句用于指定视图的内容。关于更多有效查询的信息请参见select语句。 |
build clause | 通过包括build_clause来指定填充视图的时间。指定BUILD IMMEDIATE或BUILD DEFERRED可分别实现下列操作:
|
create mv refresh | 通过包括create mv refresh子句指定更新物化视图内容的时间。子句包含关键字refresh, 且关键字后带有complete和/或on demand。其中:
|
描述
create materialized view定义了一个查询视图。这个查询视图不会因为每次在查询中被引用而更新。通过缺省,在创建视图时,这个视图会自动填充信息。您可以包括关键字build deferred来延迟视图的填充。
物化视图可以采用模式限定的方式引用。 如果在调用create materialized view命令时,您指定了一个模式名,那么这个视图就会创建于指定的模式中。所创建的视图名必须区别于相同模式下的其它任何视图、表、序列或索引。
- 物化视图为只读模式,也就是说服务器不允许对物化视图进行insert、update或delete操作。
- 能否访问视图中引用的表,是由视图的拥有者来决定的。视图用户必须有授权才能够调用视图所使用的全部函数。
- 更多关于Postgres refresh materialized view命令的信息,请参见PostgreSQL 核心文档。
示例
下列语句创建了名为dept_30的物化视图:
CREATE MATERIALIZED VIEW dept_30 BUILD IMMEDIATE AS SELECT * FROM emp WHERE deptno = 30;