2014-05-18 85 views
2

我目前正在學習postgresql。但是,我對錶格,視圖和物化視圖有點困惑。我理解基本定義和概念。但有時候,我很難做出決定,我應該創建一個表格,視圖或物化視圖。誰會分享一些經驗,如何正確應用它?對其他人的利弊有哪些?謝謝表vs視圖vs物化視圖

+1

這比postgresql更普遍 - 相同的模式適用於大多數關係數據庫 – wrschneider

回答

5

表是數據存儲的地方。你總是先從表開始,然後你的使用模式決定你是否需要視圖或物化視圖。

如果您經常以相同的方式在多個位置加入或過濾相同的表,則視圖就像存儲的查詢以備將來使用。

物化視圖就像兩者的組合:它是一個通過視圖自動填充和刷新的表。如果您正在使用視圖,並且希望預加入或預先彙總行以加快查詢速度,則可以使用此功能。

2

This article對此部分有很好的解釋。引用它,

當您查詢一個表,您直接獲取其數據。另一方面,當您查詢VIEW時,基本上查詢存儲在VIEW定義中的另一個查詢 。

...

兩個有物化視圖之間的 - 這是在其定義中 查詢並使用該查詢到的數據直接從存儲讀取 一個視圖,但它也有它自己的存儲,基本上將 作爲底層TABLE與在MATERIALIZED VIEW上操作的查詢 之間的緩存。它可以刷新,就像 無效緩存 - 一個進程會導致其定義的查詢 再次被實際數據執行。