PostgreSQL中的視圖在每次更改下面的表之一時會完全重新計算?PostgreSQL彙總視圖
更確切地說,如果我有表votes
的聚合視圖,在票表中進行任何更改時,是否需要重新計算視圖?
如果我期望經常更改votes
表,聚合視圖有什麼替代方法?我需要簡單查詢的多對數時間複雜度。
PostgreSQL中的視圖在每次更改下面的表之一時會完全重新計算?PostgreSQL彙總視圖
更確切地說,如果我有表votes
的聚合視圖,在票表中進行任何更改時,是否需要重新計算視圖?
如果我期望經常更改votes
表,聚合視圖有什麼替代方法?我需要簡單查詢的多對數時間複雜度。
普通視圖是真的只不過是存儲SELECT語句更多。它沒有將實際的信息存儲在一個靜態表中 - 這是一個物化視圖(Postgres目前沒有,並且你必須roll your own)。它將在某種意義上「每次重新計算」,因爲它不存儲計算的數據。
如果要存儲複雜的計算,請檢查previous link以瞭解如何進行物化視圖。
編輯:如果像OMG Ponies說的那樣,你在談論ALTER TABLE在底層表上 - 那麼它很容易... Postgres不會讓你改變在VIEW中使用的列的定義而不刪除先查看。
你可以使用PostgreSQL的物化視圖。
物化視圖在PostgreSQL中當然是可能的。由於PostgreSQL功能強大的PL/pgSQL語言和功能觸發系統,物化視圖實現起來很容易。我將研究在PostgreSQL中實現物化視圖的幾種方法。在Postgres的(和其他RDBMS的,我所知道的)
Postgres沒有本地的Materialized View語法,這並沒有解決OP的問題... – 2010-08-02 01:25:39
我對PostgreSQL特別不瞭解,但SQL Server和Oracle在執行CREATE VIEW語句時捕獲表,所以是 - 如果VOTES表發生更改,那麼您需要刷新視圖... – 2010-08-02 01:21:44