我在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
-
在稍后的某个时间点,由于某种原因,主表master\u选项卡被截断
-
因此,现在只有物化视图具有与主表Master\u选项卡上的任何查询相关的任何数据
我不太熟悉Oracle在幕后如何获取正确的数据。现在,当从主表中寻找数据的应用程序执行查询时会发生什么?例如,当应用程序查询时会发生什么情况,
SELECT col1, col2
SUM(tr_val1), SUM(tr_val2)
FROM master_tab
GROUP BY col1, col2
-
Oracle在内部采取什么样的决策来从物化视图中获取数据?
-
即使主表为空,Oracle还会从物化视图中检索正确的数据吗?
-
谢谢你的帮助