2012-03-15 2 views

ответ

5

Вы могли бы найти ответ in the documentation:

оператор SELECT заявление может быть распараллеливаемый только если выполняются следующие условия:

  • Запрос включает в себя параллельную спецификацию подсказку (Parallel или PARALLEL_INDEX) или объекты схемы, упомянутые в запросе, имеют связанное с ними заявление PARALEL 10.

  • По крайней мере, одна из таблиц, указанных в запросе требуется один из следующее:

    • полный просмотр таблицы

    • сканирование диапазона индекса охватывающих несколько разделов

  • В списке SELECT нет скалярных подзапросов.

Ваш запрос падает на последнее препятствие: она имеет скалярный подзапрос в его проекции. Если вы хотите распараллелить запрос, вам нужно найти другой способ его записи.

+0

Спасибо! Я никогда не осознавал эту проблему. Почему Oracle не использует параллель с подзапросами в списке выбора? Есть ли логическая причина? – Revious

+0

@APC. Я считаю, что руководство здесь неправильно. См. Мой ответ на соответствующий вопрос: http://stackoverflow.com/a/9731552/409172 –

1

Одна идея может быть, чтобы не использовать подзапрос, но вы можете попробовать и использовать присоединиться? Ваш дополнительный запрос кажется довольно простым, без группировки и т. Д., Поэтому не следует переводить его в соединение.

Возможно, оптимизатор не может выполнять параллельное выполнение, когда есть подзапросы.