创建没有数据的物化视图

时间:2018-05-12 04:58:19

标签: oracle plsql

我需要创建没有数据的物化视图test然后我将创建一个脚本,以便第一次将数据插入到这个物化视图中。在此之后,我将运行物化视图刷新以每晚刷新视图。

由于我不是物化观点的专家,任何人都可以帮助我。

目前我有脚本来创建物化视图,该视图在2000万行中运行2小时。

create materialize view

2 个答案:

答案 0 :(得分:0)

如果我是你,我会“按原样”创建物化视图(即你没有提到任何限制)。

无论如何:最简单的选择是在WHERE子句中包含 false 条件,该条件创建没有数据的对象,例如

SQL> create materialized view mv_dept as
  2  select * from dept
  3  where 1 = 2;               --> this

Materialized view created.

SQL> select * from mv_dept;

no rows selected

SQL> desc mv_dept;
 Name                          Null?    Type
 ----------------------------- -------- --------------------
 DEPTNO                        NOT NULL NUMBER(2)
 DNAME                                  VARCHAR2(14)
 LOC                                    VARCHAR2(13)

SQL>

答案 1 :(得分:-1)

我有同样的问题。在部署时,我不希望刷新花费太多时间。所以我认为这是一个更好的解决方案。

drop materialized view test_mv;

create materialized view test_mv 
as select * from all_objects 
where 1 = ( select count(*) from user_tables where table_name = 'TEST_MV' )  ;

select * From test_mv
 => null 

exec DBMS_MVIEW.REFRESH('TEST_MV', method => 'C', atomic_refresh => FALSE, out_of_place => false , PARALLELISM => 4);
 
select * From test_mv
 => result is now of all objects