刷新物化视图很慢_物化视图快速刷新机制(疑问)

工作上碰到的个问题,对物化视图不熟造成的

在物化视图的LOG上有CHANGE_VECTOR$$字段,当做UPDATE时,会记录发生变化的

的字段是哪些,因此,我认为快束刷新物化视图时会根据LOG来只更新那些发生变化的字段,

但是,以下实验好像不是这么回事,

源表tb_lvy_increasedecreasedata,在此叫A表里面有一字段flag,在这表上的物化视图日志MLOG$_TB_LVY_INCREASEDECRE 在此叫Alog表

目标物化视图tb_lvy_increasedecreasedata(不包含字段flag,因为我不关心这个字段) ,此物化视图在此叫 MB,

一,当我在目标物化视图MB上建立了trigger时,代码如下

create or replace trigger tr_acc_owesum

after update of datastutuschangeddata on tb_lvy_increasedecreasedata

for each row

begin

if UPDATING then

insert into tt_acc_owesum values(:new.increasedecreasedataid);--tt_acc_owesum为一临时表,只有一字段

end if ;

end;

我的意思是只想得到datastutuschangeddata字段发生变化的记录的主键,

但是,当我在源表tb_lvy_increasedecreasedata上做update时

update tb_lvy_increasedecreasedata t

set t.flag='cctv'

where rownum<10000;

更新的是物化视图上没有的这个字段,更新完后,我刷新目标的物化视图tb_lvy_increasedecreasedata,

此时,trigger做了不该做的事,在表tt_acc_owesum插入了9999表记录, why??????????

二,在源表与目标物化视图都不变的情总下,

我在目标物化视图上又建了一个物化视图LOG

create materialized view log on tb_lvy_increasedecreasedata,

同样,我更新源表的flag字段,但刷新后,在目标区的物化视图log表MLOG$_TB_LVY_INCREASEDECRE上又插入了记录,

原来我是想得到一些我关心的字段发生变化的记录,但在物化视图上总得不到,我现在不清楚物化视图是刷新是如何一回事,

又如何在物化视图上得到我关心的一些字段更新的情况呢?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值