Oracle - Materialized View, можно ли быстро обновить этот MV? - PullRequest
3 голосов
/ 04 августа 2011

У меня есть материализованное представление, которое выглядит примерно следующим образом, и я задаюсь вопросом, есть ли возможность сделать этот материализованный вид «быстрым» обновляемым?По сути, я спрашиваю следующее:

  1. Может ли материализованное представление содержать функции оракула, такие как COALESCE, NVL, NVL2 и т. Д., И при этом быть быстро обновляемым

  2. Может ли материализованное представление содержать созданные мной функции и при этом быстро обновляться.

  3. Может ли материализованное представление содержать соединения с производными таблицами и при этом быстро обновляться?

Я проверил документацию Oracle об этом, и в ней не было перечислено этих ограничений, однако после тестирования приведенного ниже случая на моей собственной системе я не считаю возможно.

Версия Oracle: 10g

SELECT COALESCE (col1, col2),
       myOracleFunction(col3, col4)
  FROM tableA a 
       LEFT OUTER JOIN
       (SELECT   id, MAX (sample_key) prim_sam_key
            FROM table_sample
        GROUP BY id
          HAVING COUNT (1) = 1) b ON a.id = b.id;

1 Ответ

2 голосов
/ 04 августа 2011

Требования по ссылке , которую вы указали , которую вы упускаете:

  • COUNT (*) должны быть указаны.
  • Список SELECT должен содержать все столбцы GROUP BY.

Кроме того, следующее требование указывает, что для вашего запроса быстрое обновление будет возможно только в том случае, если table_sample был обновлен, но tableA не имеет:

  • Материализованные совокупные представления с внешними объединениями быстро обновляются после обычного DML и прямых нагрузок при условии, что была изменена только внешняя таблица.Кроме того, уникальные ограничения должны существовать для столбцов соединения внутренней таблицы соединений.Если есть внешние объединения, все объединения должны быть связаны AND и должны использовать оператор равенства (=).

Наконец, когда спрашивается о материализованных представлениях, это всегда хорошая идеяточно указать, какие материализованные журналы просмотра вы создали.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...