CREATE MATERIALIZED VIEW

CREATE MATERIALIZED VIEW定义一个查询的物化视图。

简介

CREATE MATERIALIZED VIEW定义一个查询的物化视图。 在该命令被发出时,查询会被执行并且被用来填充该视图(除非使用了 WITH NO DATA),并且后来可能会用 REFRESH MATERIALIZED VIEW进行刷新。

CREATE MATERIALIZED VIEW类似于 CREATE TABLE AS,不过它还会记住被用来初始化该视图的查询, 这样它可以在后来被命令刷新。一个物化视图有很多和表相同的属性,但是不支持临时物化视图。

语法

    CREATE MATERIALIZED VIEW [ IF NOT EXISTS ] table_name
        [ (column_name [, ...] ) ]
        [ USING method ]
        [ WITH ( storage_parameter [= value] [, ... ] ) ]
        [ TABLESPACE tablespace_name ]
        AS query
        [ WITH [ NO ] DATA ]

参数

  • IF NOT EXISTS如果已经存在一个同名的物化视图时不要抛出错误。这种情况下会发出一个提示。注意这不保证现有的物化视图与即将创建的物化视图相似。

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

  • column_name新物化视图中的一个列名。如果没有提供列名,会从查询的输出列名来得到。

  • USING method此可选子句指定用于存储新具体化视图内容的表访问方法;该方法需要是TABLE类型的访问方法。

  • WITH ( storage_parameter [= value ] [, ... ] )这个子句为新的物化视图指定可选的存储参数,详见 CREATE TABLE 的 Storage Parameters。所有CREATE TABLE支持的参数CREATE MATERIALIZED VIEW也支持,详见 CREATE TABLE。

  • TABLESPACE tablespace_nametablespace_name是要把新物化视图创建在其中的表空间的名称。如果没有指定,将查阅 default_tablespace。

  • query一个 SELECT、TABLE 或者 VALUES 命令。这个查询将在一个安全受限的操作中运行。 特别地,对本身会创建临时表的函数的调用将会失败。

  • WITH [ NO ] DATA这个子句指定物化视图是否在创建时被填充。如果不是,该物化视图将被标记为不可扫描并且在REFRESH MATERIALIZED VIEW被使用前不能被查询。