Oracle分层查询执行步骤

时间:2010-08-02 16:28:46

标签: sql oracle hierarchical-query

以下是文档:http://download-east.oracle.com/docs/cd/B12037_01/server.101/b10759/queries003.htm

这是它描述的执行顺序:

  1. 评估连接(如果存在) 首先,是否指定了连接 在FROM子句或WHERE中 子句谓词。
  2. CONNECT BY条件是 评价。
  3. 任何剩余的WHERE子句 谓词被评估。
  4. 我的问题是,上面的第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)
    

    where子句中的连接是否立即执行,或者,因为在此上下文中的foo.foo_id实际上是单个值,它是在第3部分中执行的,其中执行其余的单值条件限制?

1 个答案:

答案 0 :(得分:2)

您发布的是相关子查询。

因为没有JOIN - 步骤2&将执行3:

2)评估CONNECT BY条件 3)评估任何剩余的WHERE子句谓词