表格 vs 视图 vs 材料化视图

49

我目前正在学习PostgreSQL。然而,我有点困惑于表、视图和物化视图之间的区别。我理解它们的基本定义和概念,但有时候我很难决定是应该创建表、视图还是物化视图。请问有人能分享一些经验,如何正确地使用它们?它们各自的优缺点是什么?


3
这比PostgreSQL更为通用 - 大多数关系型数据库都适用相同的模式。 - wrschneider
2个回答

54
是存储数据的地方。通常需要首先创建表,然后根据使用模式决定是否需要使用视图或者物化视图。 则是两者的结合体:它是通过一个视图自动填充和刷新的表。如果你正在使用视图,并且想要预先连接或聚合行以加快查询速度,可以使用它。

2
你始终要先从表开始,然后根据你的使用模式决定是否需要视图或物化视图。 - Alec Mather
如果您使用减少行数的Open-High-Low-Close查询(OHLC),通过聚合(FIRST()、MIN()、MAX()等)得到了一个很好的物化视图候选项。来源 - Andre S.

26

这篇文章很好地解释了这个部分。引用它的话:

当您查询一个TABLE时,您直接获取其数据。另一方面,当您查询一个VIEW时,您基本上是在查询存储在VIEW定义中的另一个查询。

...

两者之间有一个MATERIALIZED VIEW - 它是一个VIEW,在其定义中具有一个查询,并使用此查询直接从存储中提取数据,但它还具有自己的存储,基本上充当底层TABLE(S)和在MATERIALIZED VIEW上操作的查询之间的缓存。它可以像失效的缓存一样进行刷新 - 这将导致重新执行其定义的查询以针对实际数据。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接