【Oracle】优化器基础知识之结果集

1.结果集概念

结果集就是指包含指定执行结果的集合。对于优化器而言(无论CBO还是RBO),结果集和目标SQL执行计划的步骤相对应,一个执行步骤所产生的结果就是该执行步骤所对应的输出结果集。
对于目标SQL的执行计划而言,其中某个执行步骤的输出结果就是该执行步骤所对应的输出结果集,同时该执行步骤所对应的输出结果集可能就是下一个执行步骤的输入结果集。这样层层传递,知道最终输出结果集就是该SQL最终的执行结果。

2.案例说明

对于上述CBO的执行计划而言,我们将Id=1,2的执行步骤对应的输出结果集分别记为输出结果集1和输出结果集2。此处Oracle会先执行2,步骤2所对应的列的Rows的值为1,这说明对输出结果集2的Cardinality的估算值是1。同时,输出结果集2又会作为Id=1的输入结果集,步骤1所对应的列的Rows的值也为1,这说明对输出结果集1的Cardinality的估算值是1。同时Id=0的执行步骤为SELECT STATEMENT,这就说明输出结果集1就是整个SQL的最终执行结果。

原文地址:https://www.cnblogs.com/OliverQin/p/12744512.html