我正在使用Oracle中物化视图的概念执行一些测试而我无法回答这个问题,当物理视图最初创建的主表变为空时,物化视图是否会获取行?我在下面列出了一系列事件,以便想象我的想法,
这是一个例子
主表
CREATE TABLE master_tab
(
col1 varchar2(10),
col2 varchar2(10),
col3 varchar2(10),
tr_val1 number,
tr_val2 number,
tr_val3 number
)
物化视图定义
CREATE MATERIALIZED VIEW mview_test
BUILD IMMEDIATE
REFRESH COMPLETE
ON DEMAND
ENABLE QUERY REWRITE
AS SELECT col1, col2
SUM(tr_val1), SUM(tr_val2)
FROM master_tab
GROUP BY col1, col2
我不太熟悉Oracle在后台获取正确数据的工作。现在,从查找主表中的数据的应用程序执行查询时会发生什么?例如,当应用程序查询时会发生什么,
SELECT col1, col2
SUM(tr_val1), SUM(tr_val2)
FROM master_tab
GROUP BY col1, col2
感谢您的帮助
答案 0 :(得分:2)
试着回答你的问题:
以上除了检查SQL本身是否可以使用MV重写(您可以在SQL上使用 batchPlaceBetSubscription:Subject<string>=new Subject();
batchPlaceBetSubscription:Observable<Response>;
sendToServer(ID: string): Observable<any> {
this.batchPlaceBetSubscription.next(ID);
return this.batchPlaceBetSubscription$;
}
private placeBetBatchRequests(placeBetItem: IplaceBet[]) {
this.batchPlaceBetSubscription$ = this.batchPlaceBetSubscription
.buffer(Observable.timer(0, 3000))
.take(1)
.switchMap(IDsArray => {
debugger;
return this.http.post('http://someURL,IDsArray)
.map(res => res.json())
.catch(e => Observable.throw(e))
})
}
来建议是否可以重写以及使用哪个MV
完整性级别DBMS_MVIEW.EXPLAIN_REWRITE
用于查看是否允许使用查询重写。默认值为QUERY_RESRITE_INTEGRITY
,可以是ENFORCED
或TRUSTED
。在您的情况下,如果是STALE_TOLERATED
或TRUSTED
,则仍会重写查询,并且将从MV检索数据
我相信是的,给定2