
CARDINALITY - 日本エクセム株式会社 Oracle 技術情報
基本情報
ヒント名
CARDINALITY
Syntax
サポート
9i ~
詳細
特定のQuery BlockのCardinalityを強制指定します. Cardinalityを指定することで Oracleが指定されたCardinalityに設定した実行計画を樹立する目的に使用されます。このHintの利点は、CBOの特性を利用するものです。一般的にINDEX、FULLなどのHintを実行計画自体を固定させてしまう一方で、CARDINALITY Hintは予測ローを数万を付与し、残りはOptimizerに一任します。したがってCBOの動作に応じて、より柔軟な実行計画が可能となります。
使用例
次の例を見てみましょう。
t_px1テーブルのロー件数は500,000件であり、c2 like’%name%」の条件を満たしているロー件数も同じ500,000件です。
しかし、予測ロー件数は25,000件程度、実際のロー件数の5%に過ぎません。OracleのOptimizerは、LIKE’%’検索に対して適切な解釈をすることができないため、常に5%の値と予測します。上記の例の場合、非常に不正確な結果を生むことが分かります。
しかし、CARDINALITY Hintを付与すると予測ロー数を私たちが望むの値を変えることができます。このようにすると、Oracleは、正確なロー数に基づいて実行計画を策定することができます。