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 的一個擴充套件。

提交更正

如果您在文件中發現任何不正確、與您對特定功能的體驗不符或需要進一步澄清的內容,請使用 此表格 報告文件問題。