Как вставить представление в виде столбца в таблицу? - PullRequest
0 голосов
/ 10 января 2020

У меня вопрос:

Моя проблема связана с отчетностью. Я не менеджер, и я не администратор. Но мы должны делать финансовые отчеты в каждом квартале. При составлении отчетов мы используем разные таблицы из базы данных, но размер наших данных очень велик, и я использую только определенные столбцы c для подготовки этих отчетов. Этот тип отчетности вызывает множество проблем, таких как стоимость, надежность, мотивация и т. Д. c. Чтобы решить эту проблему, я решил создать новую таблицу, содержащую обязательные столбцы, которые используются при составлении отчетов. Создание новой таблицы с этими столбцами неэффективно и приводит к другим затратам. Чтобы решить эту проблему, я решил использовать функцию просмотра Oracle. На первом этапе я хочу создать представление из необходимых столбцов, а после этого я хочу создать таблицу с этими представлениями столбцов. Я не знаю, «Как вставить представление в виде столбца в таблицу?»

1 Ответ

0 голосов
/ 10 января 2020

Я понял, что вы говорите. Тем не менее, какое отношение к этому имеет отношение? Это просто сохраненный запрос, он не содержит никаких данных и не сделает эту операцию быстрее.

Это то, что вы хотите:

-- create a new table
create table new_table (col1, col2, ..., coln);

-- create a view
create or replace view v_view as
  select col1, col2, ..., coln 
  from your_big_table
  where ...;

-- insert data from view to the new table
insert into new_table (col1, co2, ..., coln)
select col1, col2, ..., coln
from v_view;

Вы получите тот же результат, если будете напрямую

insert into new_table (col1, col2, ..., coln)
select col1, col2, ..., coln
from your_big_table
where ...;

Или даже пропустив new_table создание с использованием CTAS (Создать таблицу как выбор):

create new_table as
select col1, col2, ..., coln
from your_big_table
where ...;  

Другой вариант, который вы можете рассмотреть, - использование материализованного представления . Вы бы

create materialized view mv_view as
select col1, col2, ..., coln
from your_big_table
where ...;  

Это на самом деле содержит данные; Вы можете индексировать его столбцы (и делать запросы, которые будете использовать для целей отчетности). Если это необходимо обновить, вы можете запланировать это (например, сделать это в ночные часы) или сделать это по требованию или всякий раз, когда данные фиксируются в исходной «большой» таблице; из того, что вы описали, ночная работа может быть вашим выбором.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...