Oracle иерархические шаги выполнения запросов

Вот документация: http://download-east.oracle.com/docs/cd/B12037_01/server.101/b10759/queries003.htm

Вот порядок выполнения, который это описывает:

  1. Соединение, если есть оценен сначала, указано ли соединение в ИЗ пункта или с предикатами оператора Where.
  2. ПОДКЛЮЧЕНИЕ условием оценено.
  3. Оценены любые остающиеся предикаты оператора Where.

Мой вопрос, делает часть 1. сверху обратитесь к вложенным запросам. Например, если я имею:

select * from foo
where exists (select 'x' from bar
              where bar.foo_id = foo.foo_id 
              start with bar.id is null
              connect by prior bar.id = bar.parent_id)

Соединение в, где пункт сразу выполняется, или, так как нечто foo_id в этом контексте является эффективно единственным значением, это выполняется в части 3, где остальная часть условных ограничений единственного значения выполняется?

1
задан aw crud 2 August 2010 в 16:28
поделиться

1 ответ

Вы опубликовали коррелированный подзапрос.

Поскольку нет JOIN - будут выполнены шаги 2 и 3:

2) Оценивается условие CONNECT BY.
3) Все оставшиеся предикаты предложения WHERE оцениваются

2
ответ дан 2 September 2019 в 22:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: