SQL Developer中执行计划中的灰色行是否执行?

Are the grey rows in the execution plan in SQL Developer executed?

当我得到一个查询的解释计划时,我看到计划中的一些行是灰色的。正如从某人那里听说的那样,这些灰线实际上并没有执行。我真的很困惑。如果数据库不会使用这些步骤,那么为什么计划中会有这些行?

如果实际上所有的行都被使用了,那么为什么VME_SPEND_ITEM_MAR_18 table有两次读取?

注意:此计划是SQL开发者中的解释计划按钮所采取的解释计划。所以它不是实际的执行计划。

这是解释计划的图片:

最好的问候..

As have heard from someone that these grey lines actually are not executed

因为您正在查看一个适应性计划 - 而您的 'someone' 是正确的。

换句话说,Oracle 为您的查询创建了一个执行计划...开始 运行 它,开始注意到事情与预期的不同,并即时进行路线更正。

这是一个严重的过度简化,但您可以得到 real introduction to the feature here

在您的计划中,有一个项目可以对您的 table 进行统计收集 - 优化器已经查看了该查询谓词所涉及的数据(日期范围)以及由统计数据是 WAAAY 关闭,所以在这一点上优化器说备份,我们要走不同的路线。

这是 Database 12c 的新功能,您已标记 Oracle11g,但该计划告诉我们我们在 12。

如果您在 SQL 开发人员的计划中向下滚动一点,您会看到数据库告诉您自适应计划功能正在发挥作用