2025年9月25日: PostgreSQL 18 发布!
支持的版本: 当前 (18) / 17 / 16 / 15 / 14 / 13
开发版本: devel
不支持的版本: 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3

CREATE MATERIALIZED VIEW

CREATE MATERIALIZED VIEW — 定义一个新的物化视图

概要

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

描述

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

CREATE MATERIALIZED VIEW 类似于 CREATE TABLE AS,不同之处在于它还会记住用于初始化视图的查询,以便稍后可以按需刷新。物化视图具有许多与表相同的属性,但不支持临时物化视图。

CREATE MATERIALIZED VIEW 需要对用于物化视图的模式拥有 CREATE 权限。

参数

IF NOT EXISTS

如果同名的物化视图已存在,则不抛出错误。在这种情况下会发出一个通知。请注意,不能保证现有物化视图与将要创建的视图有任何相似之处。

table_name

要创建的物化视图的名称(可选择模式限定)。该名称必须与同一模式中的任何其他关系(表、序列、索引、视图、物化视图或外部表)的名称不同。

column_name

新物化视图中列的名称。如果未提供列名,则将从查询的输出列名中获取。

USING method

此可选子句指定用于存储新物化视图内容的表访问方法;该方法必须是 TABLE 类型的访问方法。有关更多信息,请参阅 第 62 章。如果未指定此选项,则为新物化视图选择默认表访问方法。有关更多信息,请参阅 default_table_access_method

WITH ( storage_parameter [= value] [, ... ] )

此子句指定新物化视图的可选存储参数;有关更多信息,请参阅 存储参数 中的 CREATE TABLE 文档。CREATE TABLE 支持的所有参数也支持 CREATE MATERIALIZED VIEW。有关更多信息,请参阅 CREATE TABLE

TABLESPACE tablespace_name

tablespace_name 是要创建新物化视图的表空间的名称。如果未指定,则会查找 default_tablespace

query

一个 SELECTTABLEVALUES 命令。此查询将在一个受安全限制的操作中运行;特别是,调用创建临时表的函数将会失败。此外,在查询运行时,search_path 会暂时更改为 pg_catalog, pg_temp

WITH [ NO ] DATA

此子句指定在创建时是否应填充物化视图。如果未填充,则物化视图将被标记为不可扫描,在执行 REFRESH MATERIALIZED VIEW 之前无法查询。

兼容性

CREATE MATERIALIZED VIEWPostgreSQL 的一个扩展。

提交更正

如果您在文档中发现任何不正确、与您对特定功能的体验不符或需要进一步澄清的内容,请使用 此表格 报告文档问题。