代码之家  ›  专栏  ›  技术社区  ›  aw crud

Oracle分层查询执行步骤

  •  1
  • aw crud  · 技术社区  · 15 年前

    http://download-east.oracle.com/docs/cd/B12037_01/server.101/b10759/queries003.htm

    下面是它描述的执行顺序:

    1. 连接(如果存在)将被求值 在FROM子句中或与WHERE连用 子句谓词。
    2. 连接条件为 评价的。
    3. 任何剩余WHERE子句 谓词被求值。

    我的问题是,第一部分。从上面可以应用于嵌套查询。例如,如果我有:

    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\u id在此上下文中实际上是一个单值,所以它是在第3部分执行的,在第3部分中执行其余的单值条件限制?

    1 回复  |  直到 15 年前
        1
  •  2
  •   OMG Ponies    15 年前

    你发布的是一个相关的子查询。

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

    2) 将计算“连接方式”条件。
    3) 任何剩余的WHERE子句谓词都将被求值