《Oracle高性能SQL引擎剖析:SQL优化与调优机制详解》一第2章 解读执行计划

第2章 解读执行计划

我们掌握了获取和显示执行计划的方法后,就可以开始了解如何来读懂一个执行计划。从我们前面的示例中可以发现,一个执行计划实际上是一个树状关系的结构图。在这个树状结构图中,每一个节点代表了一个操作(相应的,它们在PLAN_TABLE、V$SQL_PLAN等执行计划表、视图中都有一条记录),每个支节点(或者说父节点)下都有一个或多个子操作;除根节点外,每个节点都仅隶属于一个支节点。同一层操作按照它们的ID顺序执行。操作由顶向下调用,即父操作调用子操作;数据由底向上返回,即子节点获取到的数据在处理完成后返回给父节点。
提示:请执行脚本02_01_SQL_Explain<版本>.sql创建函数SQL_Explain,注意区分版本。
从前一章的示例中可以看到,执行计划包含了相当丰富的信息。通过执行计划,我们不仅可以知道SQL引擎将以什么样的访问顺序访问对象、获取语句的输出结果,而且还可以获得优化器估算出的代价结果、运行时间以及其他一些额外信息。在本章中,将为读者详细解释执行计划中的内容。阅读完本章以后,读者再拿到任何一个语句的执行计划,都能读懂该执行计划的含义,并能通过它传达给我们的信息来了解SQL执行该语句的过程及性能。
在本章中,我们将会了解到以下内容:
执行计划中存在哪些基本数据及其具体含义;
执行计划操作与Oracle内部函数之间的关系;
执行计划中所有列的具体含义;
执行计划每个数据源操作的具体含义及其示例;
与执行计划相关的其他信息含义。

上一篇:《Oracle高性能SQL引擎剖析:SQL优化与调优机制详解》一2.3 执行计划各个列的含义


下一篇:《Oracle高性能SQL引擎剖析:SQL优化与调优机制详解》一1.2 显示执行计划