2018.11.14
OPTIMIZER PUSH PRED COST BASED
目次
- 1. 基本情報
- 2. 注意
- 3. 関連情報
基本情報
パラメータ情報
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パラメータ