Oracle 先执行树形计划中的叶子节点 (最深层),自底向上逐级返回行源给父节点。 编号仅为显示顺序,不代表执行先后。
执行计划树结构:
1 FILTER
/ \
2 6 TABLE ACCESS FULL SALGRADE
/ \
3 4 TABLE ACCESS BY ROWID DEPT
/
5 INDEX UNIQUE SCAN PK_DEPTNO
/
3 TABLE ACCESS FULL EMP
| 类型 | 触发条件 | 典型操作 | 优化目标建议 |
|---|---|---|---|
| 流水线式 | 子节点返回单行即可启动 | 表访问、索引访问、NL 连接、过滤器 | FIRST_ROWS (快速首行响应) |
| 阻塞式 | 需子节点全部行就绪才能启动 | 排序、排序合并连接 (SMJ)、聚合、分析函数 | ALL_ROWS (吞吐量最大化) |
真实环境中叶子节点 (如 Step 3/5/4) 可能由多个并行进程 (PX) 同时执行,树形计划无法直观体现并行顺序,需查看 V$PX_SESSION 或 DBMS_XPLAN.DISPLAY_CURSOR(FORMAT=>'ALL') 获取并行执行时间线。
DBMS_XPLAN.DISPLAY 格式化输出,含 COST、BYTES、PREDICATE 等关键信息。ACCESS 与 FILTER 谓词区别:ACCESS 为索引/分区裁剪条件,FILTER 为表访问后过滤条件。