定義一個新的物化視圖。
語法
CREATE MATERIALIZED VIEW name
[build clause][create mv refresh] AS subquery
其中build_clause是:
BUILD {IMMEDIATE | DEFERRED}
其中create mv refresh是:
REFRESH [COMPLETE] [ON DEMAND]
參數
參數名稱 | 描述 |
---|---|
name | 要創建的視圖名稱(可以采用模式限定的方式引用)。 |
subquery | select語句用于指定視圖的內容。關于更多有效查詢的信息請參見select語句。 |
build clause | 通過包括build_clause來指定填充視圖的時間。指定BUILD IMMEDIATE或BUILD DEFERRED可分別實現下列操作:
|
create mv refresh | 通過包括create mv refresh子句指定更新物化視圖內容的時間。子句包含關鍵字refresh, 且關鍵字后帶有complete和/或on demand。其中:
|
描述
create materialized view定義了一個查詢視圖。這個查詢視圖不會因為每次在查詢中被引用而更新。通過缺省,在創建視圖時,這個視圖會自動填充信息。您可以包括關鍵字build deferred來延遲視圖的填充。
物化視圖可以采用模式限定的方式引用。 如果在調用create materialized view命令時,您指定了一個模式名,那么這個視圖就會創建于指定的模式中。所創建的視圖名必須區別于相同模式下的其它任何視圖、表、序列或索引。
說明
- 物化視圖為只讀模式,也就是說服務器不允許對物化視圖進行insert、update或delete操作。
- 能否訪問視圖中引用的表,是由視圖的擁有者來決定的。視圖用戶必須有授權才能夠調用視圖所使用的全部函數。
- 更多關于Postgres refresh materialized view命令的信息,請參見PostgreSQL 核心文檔。
示例
下列語句創建了名為dept_30的物化視圖:
CREATE MATERIALIZED VIEW dept_30 BUILD IMMEDIATE AS SELECT * FROM emp WHERE deptno = 30;