首页 > 解决方案 > SQL Developer中执行计划中的灰色行是否被执行?

问题描述

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

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

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

这是解释计划的图像:

在此处输入图像描述

此致..

标签: oracle-sqldeveloperquery-optimizationoracle12cdatabase-administration

解决方案


正如从某人那里听说的那样,这些灰线实际上没有被执行

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

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

这是一个严重的过度简化,但您可以在此处获得对该功能的真正介绍

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

这是 Database 12c 的一个新特性,你已经标记了 Oracle11g,但是这个计划告诉我们我们在 12。

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

在此处输入图像描述


推荐阅读