Создать материализованное представление без данных - PullRequest
0 голосов
/ 12 мая 2018

Мне нужно создать материализованное представление test без данных, затем я создам сценарий для вставки данных в это материализованное представление в первый раз.После этого я буду запускать обновление материализованного представления, чтобы обновлять представление каждую ночь.

Поскольку я не разбираюсь в материализованных представлениях, может кто-нибудь помочь мне здесь.

В настоящее время у меня есть скрипт для создания материализованного представлениякоторый работает в течение 2 часов для 20 миллионов строк.

create materialize view

Ответы [ 2 ]

0 голосов
/ 12 мая 2018

Если я правильно понимаю вопрос, вы хотите разбить создание MV на отдельные шаги:

  1. Создать пустую таблицу / материализованное представление.
  2. Заполнить его.
  3. Запланируйте процесс ночного обновления.

Для этого вы можете использовать предложение on prebuilt table, чтобы преобразовать обычную таблицу в материализованное представление.

Исходная таблица демонстрации:

create table demo_source (id, name) as
select 1, 'Red' from dual union all
select 2, 'Yellow' from dual union all
select 3, 'Orange' from dual union all
select 4, 'Blue' from dual;

Новая таблица, которая будет нашей MV (вы также можете заполнить ее create table as select, или вы можете создать ее, используя явные имена столбцов, типы данных, ограничения, разбиение и т. Д., Как в любой обычной таблице):

create table demo_mv as
select * from demo_source s
where 1 = 2;

Заполните его, используя отдельный шаг insert:

insert into demo_mv
select * from demo_source;

Теперь мы конвертируем его из обычной таблицы в MV:

create materialized view demo_mv on prebuilt table
as
select * from demo_source;

Теперь DEMO_MV - это материализованное представление.

0 голосов
/ 12 мая 2018

На вашем месте я бы создал материализованное представление "как есть" (т.е. вы не упомянули никаких ограничений).

В любом случае: самый простой вариант - включить условие false в предложение WHERE, которое создает объект без данных, например

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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...