PostgreSQL REFRESH MATERIALIZED VIEW

2021-09-13 11:18 更新

REFRESH MATERIALIZED VIEW — 替換一個物化視圖的內(nèi)容

大綱

REFRESH MATERIALIZED VIEW [ CONCURRENTLY ] name
    [ WITH [ NO ] DATA ]

描述

REFRESH MATERIALIZED VIEW完全替換一個 物化視圖的內(nèi)容。你必須是該物化視圖的屬主才能執(zhí)行這個命令.舊的內(nèi)容會被拋棄。如果指定了 WITH DATA(或者作為默認(rèn)值),支持查詢將被執(zhí)行以 提供新的數(shù)據(jù),并且會讓物化視圖將處于可掃描的狀態(tài)。如果指定了 WITH NO DATA,則不會生成新數(shù)據(jù)并且會讓物化視圖 處于一種不可掃描的狀態(tài)。

CONCURRENTLYWITH NO DATA 不能被一起指定。

參數(shù)

CONCURRENTLY

對物化視圖的刷新不阻塞在該物化視圖上的并發(fā)選擇。如果沒有這個選項, 一次影響很多行的刷新將使用更少的資源并且更快結(jié)束,但是可能會阻塞 其他嘗試從物化視圖中讀取的連接。這個選項在只有少量行被影響的情況 下可能會更快。

只有當(dāng)物化視圖上有至少一個UNIQUE索引(只用列名 并且包括所有行)時,才允許這個選項。也就是說,它不能是表達(dá)式索引或者包括WHERE子句。

當(dāng)物化視圖還未被填充時,這個選項不能被使用。

即使帶有這個選項,對于任意一個物化視圖一次也只能運(yùn)行一個 REFRESH。

name

要刷新的物化視圖的名稱(可以被模式限定)。

注解

雖然用于未來的CLUSTER操作的默認(rèn)索引會被保持, REFRESH MATERIALIZED VIEW不會基于這個屬性排序產(chǎn)生 的行。如果希望數(shù)據(jù)在產(chǎn)生時排序,必須在支持查詢中使用 ORDER BY子句。

示例

這個命令將使用物化視圖order_summary定義中的查詢 來替換該物化視圖的內(nèi)容,并且讓它處于一種可掃描的狀態(tài):

REFRESH MATERIALIZED VIEW order_summary;

這個命令將釋放與物化視圖annual_statistics_basis相關(guān) 的存儲并且讓它變成一種不可掃描的狀態(tài):

REFRESH MATERIALIZED VIEW annual_statistics_basis WITH NO DATA;

兼容性

REFRESH MATERIALIZED VIEW是一種 PostgreSQL擴(kuò)展。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號