Переключение из вида в материализованное представление может быть одним из вариантов. В отличие от «обычного» представления, которое является просто сохраненным запросом и не содержит никаких данных, материализованное представление на самом деле содержит данных и действует так, как если бы оно было таблицей ; например, вы можете создавать для него индексы.
Преимущество заключается в том, что - даже если по какой-либо причине ссылка на базу данных вниз , материализованное представление будет по-прежнему содержать данные и позволять вам выполнять запросы.
Как обновляется? Это зависит от тебя; запланируйте это, например, в 02:00, когда никто не работает, и он будет готов утром. Или делайте это дважды в день. Или refre sh по требованию (вы явно выполняете refre sh). Или сделайте это, когда происходит фиксация в базовых таблицах. Эти опции описаны в документации; как только вы выясните, какой использовать, см. как применять его.
Более того, материализованное представление выберет only из BIG_TABLE
(поскольку он содержит все данные; вы сказали, что SMALL_TABLE
- это его подмножество), и вы избежали бы UNION
, который может быть дорогим, так как устраняет дублирующиеся строки.
В простейшем случае вы бы
create materialized view mv_big_table as
select col1 datefield1,
col2 aliasfield2,
col3 aliasfield3
from big_table@dblink_maindb;