2015-11-24 29 views
0

我讀這篇文章... http://hashrocket.com/blog/posts/materialized-view-strategies-using-postgresql物化視圖 - 爲什麼我們需要它?

的auther說:

物化視圖是保存在表查詢的快照。

如果是這樣的話,爲什麼我們需要物化視圖? 它是如何比從查詢插入到表不同勢:

insert into items_ver(item_id, item_group, name) 
select * from items where item_id=2; 
+0

它們用於性能方面的原因。這個想法是,有問題的查詢速度太慢而無法按需運行,因此該查詢的結果會定期保存到表中以便快速訪問。物化視圖通常用於數據倉庫場景。 – Drumbeg

+0

這並沒有什麼不同,但它爲您提供了更豐富和更好的界面。通過簡單的插入,您可以自己完成刪除/更新等所有的細節。 – nos

回答

3

物化視圖與常規視圖:

  • 常規視圖是存儲查詢就可以使用了。但是,每次查詢視圖時都會運行它。這可以使複雜的查詢變得更簡單,但是每次運行時都會影響視圖查詢的性能。
  • 物化視圖不僅爲您預先運行查詢結果。您實際上可以對結果進行索引,以優化視圖的有效子查詢。通過這種方式,您可以獲得物理表和視圖的許多好處。
  • 不利之處在於,您需要主動指示它更新其內容,這就是爲什麼(正如評論者指出的那樣),對於數據倉庫而不是活動事務數據庫,您可能期望內容始終保持最新。

物化視圖與實際的表:

  • 實際的表可通過查詢來填充,但它不再綁定到填充的查詢。例如,您可以在元素中插入查詢不會返回的元素。
  • 物化視圖保持綁定到創建它的查詢。您可以通過調用REFRESH MATERIALIZED VIEW {view_name}來重新填充查詢的最新結果。
相關問題