CREATE INCREMENTAL MATERIALIZED VIEW
功能描述
CREATE INCREMENTAL MATERIALIZED VIEW会创建一个增量物化视图,并且后续可以使用REFRESH MATERIALIZED VIEW(全量刷新)和REFRESH INCREMENTAL MATERIALIZED VIEW(增量刷新)刷新物化视图的数据。
CREATE INCREMENTAL MATERIALIZED VIEW类似于CREATE TABLE AS,不过它会记住被用来初始化该视图的查询, 因此它可以在后续中进行数据刷新。一个物化视图有很多和表相同的属性,但是不支持临时物化视图。
注意事项
增量物化视图不可以在临时表或全局临时表上创建。
增量物化视图仅支持简单过滤查询和基表UNION ALL查询。
创建增量物化视图不可指定分布列。
创建增量物化视图后,基表中的绝大多数DDL操作不再支持。
不支持对增量物化视图进行IUD(insert、update、delete)操作。
增量物化视图创建后,当基表数据发生变化时,需要使用刷新(REFRESH)命令保持物化视图与基表同步。
语法格式
CREATE [ INCREMENTAL ] MATERIALIZED VIEW table_name
[ (column_name [, ...] ) ]
[ WITH ( storage_parameter [= value] [, ... ] ) ]
[ TABLESPACE tablespace_name ]
AS query
[ WITH [ NO ] DATA ]
参数说明
[ INCREMENTAL ]
指定此属性表示创建增量物化视图。当未指定时表示创建全量物化视图,可参见CREATE MATERIALIZED VIEW。
table_name
要创建的物化视图的名称(可以被模式限定)。
取值范围:字符串,要符合标识符的命名规范。
column_name
新物化视图中的一个列名。物化视图支持指定列,指定列需要和后面的查询语句结果的列数量保持一致;如果没有提供列名,会从查询的输出列名中获取列名。
取值范围:字符串,要符合标识符的命名规范。
WITH ( storage_parameter [= value] [, … ])
这个子句为表或索引指定一个可选的存储参数,详见CREATE TABLE。
TABLESPACE tablespace_name
指定新建物化视图所属表空间。如果没有声明,将使用默认表空间。
AS query
一个SELECT或者TABLE命令。这个查询将在一个安全受限的操作中运行。
[ WITH [ NO ] DATA ]
此子句指定是否在创建物化视图时填充。若选择不填充,则物化视图将被标记为不可编辑,且在使用REFRESH MATERIALIZED VIEW刷新之前无法查询。
示例
1、创建一个普通表。
CREATE TABLE my_table (c1 int, c2 int);
2、创建增量物化视图。
CREATE INCREMENTAL MATERIALIZED VIEW my_imv AS SELECT * FROM my_table;
3、基表写入数据。
INSERT INTO my_table VALUES(1,1),(2,2);
4、对增量物化视图my_imv进行增量刷新。分别查看刷新前和刷新后的视图内容。
select * from my_imv;
REFRESH INCREMENTAL MATERIALIZED VIEW my_imv;
select * from my_imv;
返回结果为如下:
c1 | c2
----+----
(0 rows)
REFRESH MATERIALIZED VIEW
c1 | c2
----+----
1 | 1
2 | 2
(2 rows)
相关链接
ALTER MATERIALIZED VIEW, CREATE MATERIALIZED VIEW,CREATE TABLE, DROP MATERIALIZED VIEW,REFRESH INCREMENTAL MATERIALIZED VIEW ,REFRESH MATERIALIZED VIEW