如果我将查询结果保存为意见与包含查询结果的表相比,它是否会占用更多空间:
关于视图的另一个问题是,我可以基于存储为视图的查询结果来创建新的查询吗?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. LLVM蹦床多少空间
- 2. SVN需要多少空间?
- 3. class-views中的命名空间
- 4. “变量名称”需要多少空间?
- 5. 检查有多少sharedObject空间可用
- 6. 多少空间一个TextView采取
- 7. SQL列使用多少磁盘空间
- 8. MySQL:NULL字段使用多少空间?
- 9. Git vs SVN需要多少空间?
- 10. 非定制Arraylist定义多少空间
- 11. 选项卡占用多少空间?
- 12. heroku计划有多少磁盘空间?
- 13. java引用需要多少堆空间?
- 14. ibdata1有多少空间是元数据?
- 15. MySQL:文本占用多少空间?
- 16. string.Empty和null需要多少空间?
- 17. 堆栈上分配多少空间
- 18. 以下占用多少存储空间?
- 19. Vector元素占用多少空间?
- 20. 将为Java LinkedList分配多少空间?
- 21. 岭回归需要多少空间?
- 22. ConcMarkSweepGC曾经收集多少空间?
- 23. 计算文本需要多少空间
- 24. 参考需要多少空间?
- 25. iPhone上的应用程序存储空间有多少空间?
- 26. 如何摆脱LinearLayout中Views之间的空间
- 27. 评估多少空间将真空红移
- 28. python中为空字典分配了多少空间?
- 29. extjs:如何减少多个复选框之间的空间
- 30. UITableView部分之间的空间是多少?
谢谢。如果我使用'trigger'并在我的数据库中有查询结果,那么我的硬盘上的实际存储量是多少?它会少于具有相同数据的表吗? –
@ f.ashouri:'trigger'在很大程度上并不占用额外的“磁盘存储空间”,因为它实际上不是“物化视图”。所有'trigger'都是在运行时在特定事件发生时引发特定查询,例如查询从预先创建的视图中请求结果。请参阅http://michael.otacoo.com/postgresql-2/postgres-trigger-for-beginners/在撰写本文时,PostgreSQL不支持真正的“实体化视图”,所以在视图上使用'trigger' '本质上是一种解决方法。 –
我应该指出,物化视图在PostgreSQL 9.3中可用。 –