Sql 在左侧联接表上快速刷新需要这么多时间
有一个物化视图:Sql 在左侧联接表上快速刷新需要这么多时间,sql,oracle,materialized-views,Sql,Oracle,Materialized Views,有一个物化视图: create materialized view mat_report refresh fast on commit as select o.rowid as post_rowid, o.id, vp.rowid as valid_post_rowid, ivp.rowid as invalid_post_rowid from post o, valid_post vp, invalid
create materialized view mat_report
refresh fast on commit
as
select
o.rowid as post_rowid,
o.id,
vp.rowid as valid_post_rowid,
ivp.rowid as invalid_post_rowid
from post o, valid_post vp, invalid_post ivp
where o.code like (vp.code || '%')
and o.code not like (ivp.code || '%')
and vp.user_id = ivp.user_id(+)
以及用于检测其变化的日志,如下所示:
create materialized view log on post with rowid;
create materialized view log on valid_post with rowid;
create materialized view log on invalid_post with rowid;
如您所见,post
表具有与valid\u post
和invalid\u post
的内部联接,valid\u post
与invalid\u post
的左联接
将记录插入valid\u post
时,刷新物化视图的速度很快,耗时不到3秒,但将记录插入invalid\u post
时,速度很慢,耗时超过4分钟。哪里不对?我该怎么办
注意:值得一提的是,我发现一些网站关注的是
\u mv\u refresh\u use\u stats
,但不幸的是,我无法完全了解 当您将一行插入外部联接表时,您认为Oracle需要做什么工作?与插入到另一个表的操作相比?想想在每种情况下,有多少数据需要重新评估。你是什么意思,你能详细解释一下吗?@Alex Poole当我在无效表中插入一条记录时,相关的帖子及其子项没有显示出来。没有解决方案吗?有可能吗。请帮帮我,请不要。