物化視圖有三種刷新方式:COMPLETE、FAST和FORCE。
完全刷新(COMPLETE)會刪除表中所有的記錄(如果是單表刷新,可能會采用TRUNCATE的方式),然后根據物化視圖中查詢語句的定義重新生成物化視圖。
快速刷新(FAST)采用增量刷新的機制,只將自上次刷新以后對基表進行的所有操作刷新到物化視圖中去。
采用FORCE方式,Oracle會自動判斷是否滿足快速刷新的條件,如果滿足則進行快速刷新,否則進行完全刷新。
物化視圖有二種刷新模式: on demand 和 on commit。
on demand 顧名思義,僅在該物化視圖“需要”被刷新了,才進行刷新(REFRESH),即更新物化視圖,以保證和基表數據的一致性;
on commit 提交觸發,一旦基表有了commit,即事務提交,則立刻刷新,立刻更新物化視圖,使得數據和基表一致。一般用這種方法在操作基表時速度會比較慢。
對基表,平常的COMMIT在0.01秒內可以完成,但在有了ON COMMIT視圖后,居然要6秒。速度減低了很多倍。ON COMMIT視圖對基表的影響可見一斑。