我目前正在学习postgresql。但是,我对表,视图和物化视图有点困惑。我理解基本定义和概念。但有时候,我很难做出我应该创建表格,视图或物化视图的决定。有人会分享一些如何正确应用它的经验吗?一个人的优点和缺点是什么?谢谢
答案 0 :(得分:8)
表格是存储数据的地方。您始终首先从表开始,然后您的使用模式决定您是需要视图还是物化视图。
如果您经常在多个位置以相同方式加入或过滤相同的表,则视图就像存储的查询以供将来使用。
物化视图就像两者的组合:它是一个通过视图自动填充和刷新的表。如果您正在使用视图,并且想要预先加入或预先聚合行以加快查询,则可以使用此方法。
答案 1 :(得分:3)
This article对此部分有一个很好的解释。引用它,
查询TABLE时,直接获取其数据。在另一 当你查询VIEW时,你基本上是在查询另一个查询 存储在VIEW的定义中。
...
两者之间有材质化的视图 - 这是一个有视图的视图 在其定义中查询并使用此查询直接获取数据 从存储,但它也有自己的存储,基本上是行动 作为底层TABLE和查询之间的缓存 在MATERIALIZED VIEW上操作。它可以刷新,就像一个 无效的缓存 - 一个会导致其定义查询的进程 再次针对实际数据执行。