问题描述
从概念上讲,我理解实例化视图是计算值的静态表示,但是我不理解这与创建包含相同的预先计算数据的表在功能上有何不同。我认为一张表的性能可能更高,因为可以添加排序键。
解决方法
我自己那天也有同样的问题...据我了解,主要区别是:
-
REFRESH MATERIALIZED VIEW
合唱。要重新填充表,您必须截断该表并在事务中再次运行该查询。因此从编码的角度来看,MV更有效。 -
MV是数据库中的从属对象。上游表(定义中使用的表)必须以级联方式删除。对上游表的更改也非常有限。一个表与在某个时间点生成它的查询无关。因此,这是一种设计选择。我会说使用MV是一种较为保守的设计。
关于密钥,您可以在create语句中指定它们(每个official docs)
,-
物化视图或快照,如先前所知,是一个表段,其内容根据查询针对本地或远程表定期刷新。对远程表使用实例化视图是在站点之间实现数据复制的最简单方法。
-
它可以用作基于多个使用Joins的表的聚合表。我们也可以实现行级安全性特权
-
材料化视图可用于改善各种查询的性能,包括那些执行数据聚合和转换的查询。
-
一旦加载了MV的联接表,基于刷新机制,MVS数据将自动刷新