Oracle执行计划中的步骤并非按编号顺序执行。实际上,Oracle首先执行位于树状结构图叶子节点的步骤,如示例中的步骤3、5和6。每个步骤返回的行称为其下一步骤的行源。
完成叶子节点步骤后,Oracle开始执行父步骤,其顺序如下:
- 首先执行步骤3,并将结果逐行返回给步骤2。
- 对于步骤3返回的每一行,Oracle执行以下操作:
- 执行步骤5,并将结果ROWID返回给步骤4。
- 执行步骤4,并将结果行返回给步骤2。
- 执行步骤2,它接收来自步骤3和步骤4的行,并将结果返回给步骤1。
- 执行步骤6,并将结果行(如果有)返回给步骤1。
- 最后执行步骤1,如果步骤6返回了行,则将来自步骤2的行返回给发出SQL语句的用户。