Oracle【定期刷新】的【基于连接】的物化视图

本文探讨了在特定场景下创建多表连接的物化视图时,如何合理选择刷新方式以避免误用force导致的完全刷新问题。同时,通过实例展示了基于连接的fast刷新方式在实现上的限制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天项目中需要创建一个多表连接的物化视图,并且两分钟刷新一次。

如下图所示:



我的refresh字句选择的刷新方式是force,这种刷新方式会先尝试用fast方式(增量刷新)刷新,不行再用complete方式(完全刷新)刷新。

但是fast方式刷新需要在基表上建立日志(这样fast-刷新方式才能有增量的依据),而我的目标表是在远端机器上(上图我已经把DBlink连接远端表的部分换成了本地的Test1和Test2表)并且不是我们的系统,不让在上面创建日志,所以我这里的force其实实际上会以complete的方式刷新了。。。

另外的的refresh字句的采用WITH PRIMARY KEY选项生成主键物化视图,也就是说物化视图是基于主表的主键,而不是ROWID(对应于ROWID子句).


下面是创建物化视图的refresh字句的语法:

           [refresh [fast|complete|force]

           [on demand | commit]

           [start with date] [next date]

           [with {primary key|rowid}]]

===========================================================

我自己又写了一个基于连接的fast的刷新方式的物化视图,但是有错误:



看样子refresh刷新方式只能基于单表的查询,而不能基于多表的连接查询了。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值