OPTIMIZER PUSH PRED COST BASED

目次

基本情報

 

パラメータ情報

 

Syntax   : FALSE
設定方法  : ・Parameter File
      ・ALTER SYSTEM SET “_OPTIMIZER_PUSH_PRED_COST_BASED” = TRUE
      ・ALTER SESSION SET “_OPTIMIZER_PUSH_PRED_COST_BASED” = TRUE

 

バージョンとデフォルト
9iR2 : -
10gR1: true
10gR2: true
11gr1: true

 

説明

 

Push PredicateをCost basedで行うかどうかを指定します。Cost Based Push Predicateは10gで導入された概念で、既定値は常にTrueです。Oracle9iまではOracleは、可能な常にPush Predicateを試みます。しかし、10gからコスト(Cost)を考慮して、Push Predicateの発生が負荷を減らすのに役立つ場合にのみPush Predicateを実行する。

 

注意

実行計画以上のCost Based Push Predicate

 

9iのバージョンで正常にPush Predicateが行われるクエリが10gでPush Predicateが発生しないことがある。統計情報が正確であれば、Oracleのほとんどの場合、最適の判断をするが、時折、特定のクエリの場合には、Push Predicateが行われないことにより、非効率的な実行計画に変わることがある。このような場合には、_OPTIMIZER_PUSH_PRED_COST_BASEDパラメータの値をFALSEに変更したり、OPT_PARAMヒントを利用して、そのパラメータをStatementレベルで変更する必要がある。

alter session set_optimizer_push_pred_cost_based= false;
- あるいは
select/*+ opt_param('_ optimizer_push_pred_cost_based'、 'false')*/...

関連情報

 

1.NO_PUSH_PREDヒント
2.PUSH_PREDヒント
3.NO_PUSH_PREDヒント
4._OPTIMIZER_COST_BASED_TRANSFORMATIONパラメータ