con*_*att 4 oracle materialized-views oracle10g
我有以下物化视图 -
CREATE MATERIALIZED VIEW TESTRESULT
ON PREBUILT TABLE WITH REDUCED PRECISION
REFRESH FORCE ON DEMAND
WITH PRIMARY KEY
AS
SELECT...
FROM...
WHERE...
Run Code Online (Sandbox Code Playgroud)
此物化视图没有支持MATERIALIZED VIEW LOG.如上面的子句所示,这个MV有"ON DEMAND"指定,并根据Oracle文档,
"[ON DEMAND]表示[s]将通过调用三个DBMS_MVIEW刷新过程之一按需刷新物化视图."
当我调用DBMS_MVIEW.REFRESH('TESTRESULT')时,发生了什么?它是否手动检查每条记录以查看它是否已更新?
Oracle版本:10g
默认情况下(并且此默认值在不同版本的Oracle中更改),将在物化视图上执行完整的原子刷新.这意味着将删除物化视图中的数据,将重新执行基础查询,并将结果加载到物化视图中.您可以通过为ATOMIC_REFRESH
参数传递值FALSE来提高刷新效率,即
dbms_mview.refresh( 'TESTRESULT', atomic_refresh => false );
Run Code Online (Sandbox Code Playgroud)
这将导致物化视图被截断,查询重新执行,并且结果通过直接路径插入插入到物化视图中.这将比原子刷新更有效,但物化视图在刷新期间将为空.