【问题标题】:Are the grey rows in the execution plan in SQL Developer executed?SQL Developer中执行计划中的灰色行是否被执行?
【发布时间】:2019-08-08 22:13:21
【问题描述】:

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

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

注意:这个计划是由SQL Developer中的解释计划按钮采取的解释计划。所以这不是一个实际的执行计划。

这是解释计划的图片:

最好的问候..

【问题讨论】:

  • 您标记了 oracle11g - 您确定您使用的是 11 而不是 12?因为如果 12,我会说你正在寻找一个自适应计划

标签: oracle-sqldeveloper query-optimization oracle12c database-administration


【解决方案1】:

从某人那里听说,这些灰线实际上不是 执行

因为您正在寻找一个适应性计划 - 而您的“某人”是对的。

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

这过于简单化了,但您可以得到real introduction to the feature here

在您的计划中,有一个项目可以在您的表上进行 Stats Collection - 优化器已经查看了该查询谓词(日期范围)所涉及的数据,并且 stats 指示的行数是 WAAAY 关闭,所以那时优化器会说备份,我们要走不同的路线。

这是 Database 12c 的一项新功能,您已经标记了 Oracle11g,但这个计划告诉我们我们在 12 上。

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

【讨论】:

  • 谢谢杰夫。这是一个很好的澄清和你添加的一个很好的文件。最佳
猜你喜欢
  • 1970-01-01
  • 2017-08-20
  • 2021-03-22
  • 2011-03-06
  • 2014-06-20
  • 1970-01-01
  • 2012-05-11
  • 2012-02-18
  • 1970-01-01
相关资源
最近更新 更多