小编aRv*_*Rvi的帖子

Oracle查询性能:VIEW PUSHED PREDICATE导致对内部查询的多次执行

这与我们面临的涉及表和视图(具有70+百万条记录)的联接的查询所面临的性能问题有关。

在围绕不同环境下的执行计划进行了广泛的分析之后,我可以将其指向其中一个联接的VIEW PUSHED PREDICATE分支。

执行次数(执行计划的“开始”列)等于驱动/外部表上返回的行数-可能是在评估外部结果集上的每个匹配项的视图。

由于此处涉及的表具有数百万条记录,因此%CPU和总体执行时间变得非常糟糕。如果我添加了不推送谓词的提示,则不是这种情况(no_push_pred); 处决只有1。

VIEW PUSHED PREDICATE是否需要此功能,或者我是否对此缺少任何概念?

Oracle数据库版本:12c企业版12.1.0.2.0


我尝试使用简单的查询来模拟问题(或行为)-请在下面查看详细信息。

注意:在此处添加了no_merge提示,以确保Optimizer在联接期间不会合并视图,因此该计划与我的实际查询的计划相同。

查询:

SELECT 
v.STATUS_CODE,
    a1.STATUS_DESC
    FROM STATUS_DETAIL a1,
    (select   /*+ no_merge push_pred */
        a2.STATUS_CODE
          from STATUS a2
             where  a2.STATUS_CODE < 50) v
  where a1.STATUS_CODE = v.STATUS_CODE;
Run Code Online (Sandbox Code Playgroud)

执行计划(使用TABLE(DBMS_XPLAN.display_cursor)提取):

我指的是计划中的3号和4号线-“开始”列的值为70(等于2号线的A-Rows列的值-驱动表访问)

 -----------------------------------------------------------------------------------------------------------------------------------                                                                                                                                                                         
| Id  | Operation               | Name          | Starts | E-Rows |E-Bytes| Cost (%CPU)| E-Time   | A-Rows |   A-Time   | Buffers |                                                                                                                                                                         
-----------------------------------------------------------------------------------------------------------------------------------                                                                                                                                                                         
|   0 | SELECT STATEMENT        |               |      1 |        |       |   213 (100)|          |     22 |00:00:00.01 …
Run Code Online (Sandbox Code Playgroud)

oracle performance join predicate view

4
推荐指数
1
解决办法
2979
查看次数

标签 统计

join ×1

oracle ×1

performance ×1

predicate ×1

view ×1