Глава 5. Примеры использования

Материализованные представления

Материализованные представления экспортируются в виде снимка «Snapshot Materialized Views» (Снимок материализованных представлений), поскольку Postgres Pro поддерживает только полное обновление.

При экспорте материализованных представлений ora2pgpro сначала добавляет код SQL для создания таблицы materialized_views (материализованные представления):

CREATE TABLE materialized_views (
        mview_name text NOT NULL PRIMARY KEY,
        view_name text NOT NULL,
        iname text,
        last_refresh TIMESTAMP WITH TIME ZONE
);

Для каждого материализованного представления создаётся одна запись в этой таблице. Затем добавляется код PL/pgSQL для создания деревьев функций:

  • Функция create_materialized_view(text, text, text) используется для создания материализованного представления.
  • Функция drop_materialized_view(text) используется для удаления материализованного представления.
  • Функция refresh_full_materialized_view(text) используется для обновления материализованного представления.

Далее добавляется SQL-код для создания представления и материализованного представления:

CREATE VIEW mviewname_mview AS
SELECT ... FROM ...;

SELECT create_materialized_view('mviewname','mviewname_mview', заменить на имя столбца, используемого для создания индекса);

Первый аргумент — это имя материализованного представления, второй — имя представления, на основе которого создаётся материализованное представление, а третий — имя столбца для построения индекса (а также первичного ключа в большинстве случаев). Этот столбец не рассчитывается автоматически, поэтому его имя необходимо заменить.

Как было сказано выше, ora2pgpro поддерживает только снимок материализованных представлений, поэтому таблица будет обновлена полностью при опустошении таблицы и повторной загрузке данных из представления:

refresh_full_materialized_view('mviewname');

Чтобы удалить материализованное представление, вызовите функцию drop_materialized_view() с именем материализованного представления в качестве параметра.