Oracle - ПРИСОЕДИНЯЙТЕСЬ к двум сложным представлениям - ошибки оптимизатора - PullRequest
0 голосов
/ 15 августа 2011

У меня два довольно сложных взгляда.Мне нужно подготовить отчет, который объединит оба столбца.Каждый из просмотров по отдельности возвращается менее чем за минуту с полным набором результатов.Когда я присоединяюсь к ним, оптимизатор перестраивает запрос и делает странные вещи, поэтому результат не возвращается вообще.Вопрос в том, есть ли способ сказать оптимизатору сначала извлекать оба набора, а затем только потом соединять их (каждый набор - это всего несколько тысяч записей).

В настоящее время решение основано на создании промежуточной таблицы.(материализованное представление также работает), но я хотел бы сделать это в одном запросе,

Спасибо

1 Ответ

4 голосов
/ 15 августа 2011

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

Если вы не можете этого сделать, попробуйте подсказку оптимизатора NO_REWRITE . Как это:

SELECT /*+ NO_REWRITE */ rest_of_your_query_goes_here

Это скажет Oracle попытаться интерпретировать ваш запрос напрямую, а не пытаться переписать его.

...