在执行计划中,步骤的实现并非按编号顺序进行。Oracle首先处理树结构图中的叶子节点步骤,例如步骤3、5、6。每一步返回的行称为其下一步骤的行源。以下是具体的步骤执行顺序:
- 首先,Oracle执行步骤3,并将结果行逐一返回给步骤2。
- 对于步骤3返回的每一行,Oracle接着执行:
- 步骤5,并将结果ROWID返回给步骤4。
- 然后,Oracle执行步骤4,并将结果行返回给步骤2。
- 接下来,Oracle执行步骤2,接受来自步骤3和步骤4的行,并将结果返回给步骤1。
- Oracle执行步骤6,如果有结果行,则将其返回给步骤1。
- 最后,Oracle执行步骤1,如果从步骤6返回行,则将来自步骤2的行返回给发出SQL语句的用户。