CREATE INCREMENTAL MATERIALIZED VIEW
功能描述
创建一个增量物化视图。可以使用REFRESH MATERIALIZED VIEW(全量刷新)和REFRESH INCREMENTAL MATERIALIZED VIEW(增量刷新)进行物化视图的数据刷新。
CREATE INCREMENTAL MATERIALIZED VIEW语句与CREATE TABLE AS语句功能相似,但其会持久化存储初始化查询语句,从而支持后续的数据刷新操作。物化视图具有与普通表相同的持久化属性,但不同于临时表,系统不支持创建临时类型的物化视图。
注意事项
- 不支持在DATABASE LINK表、临时表或全局临时表上创建增量物化视图。
- 增量物化视图仅支持简单过滤查询和基表UNION ALL查询。
- 创建增量物化视图不支持WITH子句、GROUP BY子句、ORDER BY子句、LIMIT子句、WINDOW子句、DISTINCT算子、AGG算子,不支持除UNION ALL外的子查询。
- 创建增量物化视图不可指定分布列。
- 创建增量物化视图后,基表中的绝大多数DDL操作不再支持。
- 不支持对增量物化视图进行IUD操作。
- 增量物化视图创建后,当基表数据发生变化时,需要使用刷新(REFRESH)命令保持物化视图与基表同步。
- Ustore引擎不支持物化视图的创建和使用。
语法格式
CREATE INCREMENTAL MATERIALIZED VIEW mv_name
[ (column_name [, ...] ) ]
[ TABLESPACE tablespace_name ]
AS query;

参数说明
示例
--创建表空间。 gaussdb=# CREATE TABLESPACE tbs_data1 RELATIVE LOCATION 'tablespace1/tbs_data1'; --创建一个普通表。 gaussdb=# CREATE TABLE my_table (c1 int, c2 int); --创建增量物化视图。 gaussdb=# CREATE INCREMENTAL MATERIALIZED VIEW my_imv (col1,col2) TABLESPACE tbs_data1 AS SELECT * FROM my_table; --基表写入数据。 gaussdb=# INSERT INTO my_table VALUES(1,1); --查询增量物化视图数据。 gaussdb=# SELECT * FROM my_imv; col1 | col2 ------+------ (0 rows) --对增量物化视图my_imv进行增量刷新。 gaussdb=# REFRESH INCREMENTAL MATERIALIZED VIEW my_imv; --查询增量物化视图数据。 gaussdb=# SELECT * FROM my_imv; col1 | col2 ------+------ 1 | 1 (1 row) --删除增量物化视图。 gaussdb=# DROP MATERIALIZED VIEW my_imv; --删除普通表my_table。 gaussdb=# DROP TABLE my_table; --删除表空间。 gaussdb=# DROP TABLESPACE tbs_data1;