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