Я понял, что вы говорите. Тем не менее, какое отношение к этому имеет отношение? Это просто сохраненный запрос, он не содержит никаких данных и не сделает эту операцию быстрее.
Это то, что вы хотите:
-- 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 ...;
Это на самом деле содержит данные; Вы можете индексировать его столбцы (и делать запросы, которые будете использовать для целей отчетности). Если это необходимо обновить, вы можете запланировать это (например, сделать это в ночные часы) или сделать это по требованию или всякий раз, когда данные фиксируются в исходной «большой» таблице; из того, что вы описали, ночная работа может быть вашим выбором.