Вы можете сделать все это проще, установив параметр mat_view с обновлением на опции commit и, если возможно, также чтобы он обновил быстро на фиксации. Это гарантирует, что каждый раз, когда происходит изменение, представление обновляет только новые строки (по сравнению с полным обновлением, где запрос за представлением выполняется в целом).
Теперь этот последний метод может вызвать массу проблем, потому что параметр refresh fast on commit имеет ограничения, и если вы не можете выполнить его, вы просто не сможете его использовать. Если вы, однако, можете установить это на , то обновите завершение на commit, это может замедлить работу системы, как вы предполагали, время от времени, а также предполагает, что вы не можете изолировать источник изменений.
Если вы хотите увидеть, где происходит наиболее частая смена, я предлагаю вам использовать пользовательскую таблицу (в день), где будет храниться ежедневный результат запроса позади mat_view.Затем через несколько дней, просто сделать что-то вроде:
как метод с ORA_ROWSCN
не всегда работает. Метод с триггерами работает в ограниченных случаях, и если не требуется создавать эти триггеры как 100 таблиц ... это смехотворно.
Когда вы находите источник изменений - например, несколько столбцов, исходящих из некоторых таблиц, то вы можете рассмотреть возможность перезаписи запроса mat_view, следуя некоторым принципам DW и создать звездную схему запроса. Это будет сегментировать запрос и, несомненно, ускорит запрос. Проверьте, откуда идет загрузка - если эти дорогостоящие соединения, сканирование того, чего нельзя избежать, возможно, разбивка запроса на более мелкие запросы может сделать трюк, если вы также можете материализовать их, возможно, вы можете быстро установить их с помощью обновления совершить также.
Все зависит от реализации. Если вы можете привести здесь пример запроса или его часть, с планом объяснения мы также можем дать вам конкретные решения.
ура
Не могли бы вы разместить номер вашего представления? Вы имеете в виду, что вы вообще не хотите использовать материализованное представление? Или просто вместе с результатом кэширования? – poida
Если вы хотите свернуть свое собственное сырое решение (не знаете, почему, хотя, если база данных имеет встроенную поддержку), вы можете обновить таблицу после того, как триггеры вставок в таблице будут отображаться на основе – poida
. Можно ли предположить, что таблица не имеет первичного ключа? – Ben