预建表的物化视图

问题描述 投票:0回答:1

我正在尝试找到一种方法来使用预先填充数据的表来构建物化视图。

物化视图创建时状态为“未知”。为了支持查询重写,我调用了

dbms_mview.refresh
。但是,我观察到预先填充的数据在重新填充之前被刷新清除了。

有什么方法可以在MV刷新时,不重新填充而保留预建表中的数据?

下面是我试验过的代码:


--simulate data population of the pre-built table
create table t_mv as select col1, col2, col3 from t order by col2;

--create the MV
create materialized view t_mv
on prebuilt table
enable query rewrite
as
    select col1, col2, col3 from t
;

--refresh the MV
exec dbms_mview.refresh(list => 'T_MV');

--## After MV refresh completed, data is not clustered by col2 as what it was in the pre-built table.
oracle materialized-views
1个回答
0
投票

刷新只是在 mview 定义中运行查询,因此您还需要在其中包含 ORDER BY,例如

SQL> create table t as select * from dba_objects;

Table created.

SQL> create table mv as select * from t order by object_type;

Table created.

SQL> create materialized view mv
  2  on prebuilt table
  3  enable query rewrite
  4  as select * from t order by object_type;

Materialized view created.

还检查属性聚类https://www.youtube.com/watch?v=UndmvLZ4KSI

© www.soinside.com 2019 - 2024. All rights reserved.