如果我將查詢結果保存爲意見與包含查詢結果的表相比,它是否會佔用更多空間:
關於視圖的另一個問題是,我可以基於存儲爲視圖的查詢結果來創建新的查詢嗎?views - 多少空間?
回答
問題1
要回答你的第一個問題,你不能查詢結果存儲爲意見,但你可以使用PostgreSQL的trigger
功能實現類似的功能。
PostgreSQL本地支持創建views
,但不創建materialized views
(存儲結果的視圖) - 但可以使用觸發器來處理。請參閱http://wiki.postgresql.org/wiki/Materialized_Views
視圖不佔用RAM(「內存」)。
問題2
並回答第二個問題,要更新PostgreSQL的視圖,您需要使用CREATE RULE
- http://www.postgresql.org/docs/devel/static/sql-createrule.html
創建規則定義應用到新規則指定的表或視圖。創建或替換規則將創建一個新的規則,或替換同一個表的同名現有規則。
視圖不存儲查詢結果,它們存儲查詢。
有些RDBMS允許的方式來存儲查詢結果(對於一些查詢):這就是所謂的在Oracle
和索引視圖中SQL Server
物化視圖。
PostgreSQL
不支持這些(儘管@CalvinCheng提到,你可以使用觸發器或規則來模擬這些)。
是的,您可以在查詢中使用視圖。然而,視圖僅僅是一種通過名稱來引用複雜查詢的便捷方式,而不是存儲其結果的方式。
@ f.ashouri:物化視圖存儲查詢定義和結果,簡單視圖只存儲查詢定義。 'PostgreSQL'不支持實體化視圖。 – Quassnoi
@ f.ashouri當你說「內存」時,如果你的意思是內存或磁盤存儲,它一點也不清楚。如果你的意思是RAM:視圖對RAM沒有影響;就好像你編寫了在子查詢中定義視圖的底層'SELECT'。 –
@Quassnoi - 'PostgreSQL'確實不支持實體化視圖。但是,可以通過使用觸發器來實現物化視圖。請參閱http://wiki.postgresql.org/wiki/Materialized_Views –
PostgreSQL視圖是保存的查詢。一旦創建,從視圖中選擇與從原始查詢中選擇完全一樣,它每次都會返回查詢。所以意見不佔用記憶。
不能將查詢結果存儲爲視圖,視圖只是查詢,但可以使用物化視圖實現類似的功能。物化視圖只會按需更新。其次,整個物化視圖必須更新;沒有辦法只更新一個陳舊的行。
因此,在這種情況下,只要發生會使行無效的更改,就必須急切地更新視圖。它可以通過觸發器完成。
- 1. SVN需要多少空間?
- 2. LLVM蹦牀多少空間
- 3. class-views中的命名空間
- 4. 嶺迴歸需要多少空間?
- 5. Vector元素佔用多少空間?
- 6. 選項卡佔用多少空間?
- 7. ibdata1有多少空間是元數據?
- 8. string.Empty和null需要多少空間?
- 9. 堆棧上分配多少空間
- 10. 檢查有多少sharedObject空間可用
- 11. ConcMarkSweepGC曾經收集多少空間?
- 12. MySQL:文本佔用多少空間?
- 13. 以下佔用多少存儲空間?
- 14. Git vs SVN需要多少空間?
- 15. SQL列使用多少磁盤空間
- 16. 將爲Java LinkedList分配多少空間?
- 17. 多少空間一個TextView採取
- 18. 參考需要多少空間?
- 19. heroku計劃有多少磁盤空間?
- 20. MySQL:NULL字段使用多少空間?
- 21. 非定製Arraylist定義多少空間
- 22. java引用需要多少堆空間?
- 23. 「變量名稱」需要多少空間?
- 24. 計算文本需要多少空間
- 25. iPhone上的應用程序存儲空間有多少空間?
- 26. 如何擺脫LinearLayout中Views之間的空間
- 27. python中爲空字典分配了多少空間?
- 28. 評估多少空間將真空紅移
- 29. UITableView部分之間的空間是多少?
- 30. extjs:如何減少多個複選框之間的空間
謝謝。如果我使用'trigger'並在我的數據庫中有查詢結果,那麼我的硬盤上的實際存儲量是多少?它會少於具有相同數據的表嗎? –
@ f.ashouri:'trigger'在很大程度上並不佔用額外的「磁盤存儲空間」,因爲它實際上不是「物化視圖」。所有'trigger'都是在運行時在特定事件發生時引發特定查詢,例如查詢從預先創建的視圖中請求結果。請參閱http://michael.otacoo.com/postgresql-2/postgres-trigger-for-beginners/在撰寫本文時,PostgreSQL不支持真正的「實體化視圖」,所以在視圖上使用'trigger' '本質上是一種解決方法。 –
我應該指出,物化視圖在PostgreSQL 9.3中可用。 –