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, чтобы сделать звонок.