GaussDB-CREATE INCREMENTAL MATERIALIZED VIEW
功能描述
CREATE INCREMENTAL MATERIALIZED VIEW会创建一个增量物化视图,后续可以使用REFRESH MATERIALIZED VIEW(全量刷新)和REFRESH INCREMENTAL MATERIALIZED VIEW(增量刷新)刷新物化视图的数据。
CREATE INCREMENTAL MATERIALIZED VIEW类似于CREATE TABLE AS,不过它会记住被用来初始化该视图的查询, 因此它可以在后续中进行数据刷新。一个物化视图有很多和表相同的属性,但是不支持临时物化视图。
注意事项
- 增量物化视图不可以在DATABASE LINK表、临时表或全局临时表上创建。
- 增量物化视图仅支持简单过滤查询和基表UNION ALL查询。
- 创建增量物化视图不可指定分布列。
- 创建增量物化视图后,基表中的绝大多数DDL操作不再支持。
- 不支持对增量物化视图进行IUD操作。
- 增量物化视图创建后,当基表数据发生变化时,需要使用刷新(REFRESH)命令保持物化视图与基表同步。
- Ustore引擎不支持物化视图的创建和使用。
语法格式
CREATE INCREMENTAL MATERIALIZED VIEW mv_name
[ (column_name [, ...] ) ]
[ TABLESPACE tablespace_name ]
AS query;
参数说明
-
mv_name
要创建的物化视图的名称(可以被模式限定)。
取值范围:字符串,要符合标识符命名规范。
-
column_name
新物化视图中的一个列名。物化视图支持指定列,指定列需要和后面的查询语句结果的列数量保持一致;如果没有提供列名,会从查询的输出列名中获取列名。
取值范围:字符串,要符合标识符命名规范。
-
TABLESPACE tablespace_name
可选。指定新建物化视图所属表空间。如果没有声明,将使用默认表空间。
-
AS query
一个SELECT或者TABLE命令。这个查询将在一个安全受限的操作中运行。
示例
--创建表空间。
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;
相关链接
ALTER MATERIALIZED VIEW,CREATE MATERIALIZED VIEW,CREATE TABLE,DROP MATERIALIZED VIEW,REFRESH INCREMENTAL MATERIALIZED VIEW,REFRESH MATERIALIZED VIEW
更多详情请参考GaussDB 文档中心:doc.hcs.huawei.com/db/zh-cn/ga…