我在自己的架构中有物化视图,物化视图源是另一个架构表但是,这个主表有900行,我在这个主表上做了一些dml操作,之后我将刷新这个物化视图,如你所知,我做了一些研究“如何刷新我自己的物化视图”,它说“你可以完成刷新或快速刷新”,但我不明白这些解决方案的含义所以我的问题很简单;
MV中的完全刷新和快速刷新有什么区别?
P.S:如果我的主表有100万或更多行,我应该选择哪一行? (快速或完整)
感谢您的回复。
答案 0 :(得分:6)
"完成刷新"表示您截断整个物化视图并插入新数据。
"快速刷新"表示只更新(或插入/删除)主表上已更改的行。
就像信息"强制刷新"意思是,Oracle尝试进行快速刷新,如果不可能,则执行"完全刷新"
通常快速刷新比完全刷新快得多,但它有限制。您必须在主表上定义MATERIALIZED VIEW LOG
。
以下是限制General Restrictions on Fast Refresh的完整列表,其中有很多。
答案 1 :(得分:0)
一如既往,所以如果可能,请尝试两者并测量您的应用程序。作为一般规则,只要只有一小部分数据发生变化,快速刷新可能会快得多。如果所有数据都已更改,则完整刷新更好。
通过快速刷新,Oracle会跟踪基表的更改,并在更新时将更改应用于实例化视图。另一方面,完全刷新从头开始重建物化视图。数百万行会很昂贵,但如果不了解更多有关应用程序的信息,就无法选择最佳选项。