Oracle 11g Materialized View зависает

Я пытаюсь создать материализованное представление в Oracle, используя предварительно построенное представление.

  create materialized view bfb_rpt_sch01.mvw_base_sales
  as select * from bfb_rpt_sch01.vw_base_sales;

Эта команда не будет выполняться и зависает. Я подумал, что, возможно, это как-то связано с неправильным написанием представления. Поэтому я выполнил следующий запрос на представление.

  select count(*) from bfb_rpt_sch01.vw_base_sales

Этот запрос занимает около 6 минут и возвращает 2,7 миллиона. Это говорит мне, что проблема не в этом, но я могу ошибаться.

1 ответ

Мне удалось выяснить мою проблему. Мой (CREATE MATERIALIZED VIEW AS) использовал другое объяснение по сравнению с моим (CREATE TABLE AS). Если бы мой код содержал следующую строку кода, он работал бы полностью как (CREATE TABLE AS), но он продолжал бы висеть в течение 48+ часов, прежде чем потерпит неудачу при использовании (CREATE MATERIALIZED VIEW AS).

WHERE a.column_name NOT IN (SELECT b.column_name FROM B) --culprit

Я изменил код, используя следующее, и теперь он работает нормально.

WHERE NOT EXISTS (SELECT NULL FROM B WHERE a.column_name = b.column_name) --works

Я не уверен, почему это происходит, возможно, ошибка? Я не достаточно о ORACLE, чтобы сделать звонок.

Другие вопросы по тегам