Одним из самых больших преимуществ использования материализованного представления является то, что Oracle заботится о синхронизации данных. Если у вас есть отдельная сводная таблица, вы несете ответственность за синхронизацию данных. Как правило, для этого требуется разумное количество кода и приличное количество тестирования, и большинству организаций удается совершать ошибки, которые оставляют дыры, которые приводят к потере синхронизации сводной таблицы. Это особенно верно, когда вы пытаетесь реализовать инкрементные обновления сводной таблицы.
Другое важное преимущество заключается в том, что в зависимости от настроек Oracle может использовать перезапись запросов для использования материализованных представлений, когда пользователи выдают запросы к базовым таблицам. Так, например, если у вас есть куча существующих отчетов по детальной таблице, которые производят ежедневные, ежемесячные и годовые сводные результаты, вы можете создать материализованное представление на базовой таблице, которое агрегирует данные на ежедневном уровне, и оптимизатор может использовать это материализованное представление для всех ваших существующих запросов. Это значительно упрощает оптимизацию рабочих нагрузок отчетов в хранилище данных, не пытаясь переписать десятки отчетов, чтобы использовать новую сводную таблицу или связываться с ней, DBMS_ADVANCED_REWRITE
чтобы заставить вас самостоятельно переписывать запросы.
ON DEMAND
это стандартное поведение обновления. Материализованное представление должно быть создано с помощьюON COMMIT
. и поддержание материализованного представления не является бесплатным. Это, вероятно, дешевле, чем триггер.