VastbaseG100

基于openGauss内核开发的企业级关系型数据库。

Menu

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 VIEWCREATE MATERIALIZED VIEWCREATE TABLEDROP MATERIALIZED VIEWREFRESH INCREMENTAL MATERIALIZED VIEWREFRESH MATERIALIZED VIEW