CREATE MATERIALIZED VIEW

功能描述

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

注意事项

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

语法格式

  1. CREATE MATERIALIZED VIEW mv_name
  2. [ (column_name [, ...] ) ]
  3. [ WITH (storage_parameter [= value][, ...] ) ]
  4. [ TABLESPACE tablespace_name ]
  5. AS query
  6. [ 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”参数时,则不要数据。

示例

  1. --创建一个表tpcds.store_returns表。
  2. postgres=# CREATE TABLE tpcds.store_returns
  3. (
  4. W_WAREHOUSE_SK INTEGER NOT NULL,
  5. W_WAREHOUSE_ID CHAR(16) NOT NULL,
  6. sr_item_sk VARCHAR(20) ,
  7. W_WAREHOUSE_SQ_FT INTEGER
  8. );
  9. --以tpcds.store_returns表为基表创建一个物化视图tpcds.store_returns_mv
  10. postgres=# CREATE MATERIALIZED VIEW tpcds.store_returns_mv AS SELECT * FROM tpcds.store_returns';
  11. --使用tpcds.store_returns拷贝一个新表tpcds.store_returns_mv2作为一个物化视图。
  12. postgres=# CREATE MATERIALIZED VIEW tpcds.store_returns_mv2 AS table tpcds.store_returns;
  13. --删除物化视图。
  14. postgres=# DROP MATERIALIZED VIEW tpcds.store_returns_mv cascade;

相关链接

CREATE TABLEDROP MATERIALIZED VIEWALTER MATERIALIZED VIEWREFRESH MATERIALIZED VIEW