Menu

文档

CREATE MATERIALIZED VIEW

功能描述

CREATE MATERIALIZED VIEW 定义一个查询的物化视图。 在该命令被发出时,查询会被执行并且被用来填充该视图(除非使用了 WITH NO DATA),并且后来可能会用 REFRESH MATERIALIZED VIEW进行刷新;CREATE MATERIALIZED VIEW类似于 CREATE TABLE AS,不过它还会记住被用来初始化该视图的查询, 这样它可以在后来被命令刷新。一个物化视图有很多和表相同的属性,但是不支持临时物化视图。

注意事项

  • 物化视图不可以在临时表或全局临时表上创建。
  • 物化视图创建后,当基表数据发生变化时,需要使用刷新(REFRESH)命令保持物化视图与基表同步。

语法格式

CREATE MATERIALIZED VIEW mv_name
    [ (column_name [, ...] ) ]
    [ WITH (storage_parameter [= value][, ...] ) ]
    [ TABLESPACE tablespace_name ]
    AS query
    [ WITH [ NO ] DATA ];

参数说明

  • mv_name

    要创建的物化视图的名称(可以被模式限定)。

    取值范围:字符串,要符合标识符的命名规范。

  • column_name

    新物化视图中的一个列名。物化视图支持指定列,需要和后面的查询语句结果的列数量保持一致;如果没有提供列名,会从查询的输出列名来得到。

    取值范围:字符串,要符合标识符的命名规范。

  • WITH ( storage_parameter [= value] [, … ] )

    这个子句为表或索引指定一个可选的存储参数。所有CREATE TABLE支持的参数CREATE MATERIALIZED VIEW也支持,不过OIDS除外。详见CREATE TABLE

  • TABLESPACE tablespace_name

    指定新物化视图将要在tablespace_name表空间内创建。如果没有声明,将使用默认表空间。

  • AS query

    一个SELECT、TABLE 或者VALUES命令。这个查询将在一个安全受限的操作中运行。

  • [ WITH [ NO ] DATA ]

    创建物化视图时,是否也插入查询到的数据。默认是要数据,选择“NO”参数时,则不要数据。

示例

--创建一个表tpcds.store_returns表。
postgres=# CREATE TABLE tpcds.store_returns
(
    W_WAREHOUSE_SK            INTEGER               NOT NULL,
    W_WAREHOUSE_ID            CHAR(16)              NOT NULL,
    sr_item_sk                VARCHAR(20)                   ,
    W_WAREHOUSE_SQ_FT         INTEGER                       
);
--以tpcds.store_returns表为基表创建一个物化视图tpcds.store_returns_mv。
postgres=# CREATE MATERIALIZED VIEW tpcds.store_returns_mv AS SELECT * FROM tpcds.store_returns';

--使用tpcds.store_returns拷贝一个新表tpcds.store_returns_mv2作为一个物化视图。
postgres=# CREATE MATERIALIZED VIEW tpcds.store_returns_mv2 AS table tpcds.store_returns;

--删除物化视图。
postgres=# DROP MATERIALIZED VIEW tpcds.store_returns_mv cascade;

相关链接

CREATE TABLEDROP MATERIALIZED VIEWALTER MATERIALIZED VIEWREFRESH MATERIALIZED VIEW

本文档遵循知识共享许可协议CC 4.0 (http://creativecommons.org/Licenses/by/4.0/)。