述部のフィルター係数は、0 と 1 の間の数であり、表の中で、述部が真となる行の比率を予測します。 例えば、表 T の列 C1 には、5 つの異なる値 (A、D、Q、W、X) だけが入っていることを DB2 が判別できるものとします。 他に情報がない場合、DB2 は、5 分の 1 の行が列 C1 に値 D を保有していると見積もります。 その場合に、述部 C1='D' の表 T でのフィルター係数は、0.2 となります。
DB2 オプティマイザーは、参照されている表の統計が最新のものであっても、ある述部の、または SQL ステートメント内の述部のセットの、正確なフィルター係数を常に判別できるわけではありません。 結果として、オプティマイザーは、最適なものよりも小さいアクセス・プランを生成します。
例えば、述部 WHERE T1.C1 > ? は、PREPARE または BIND フェーズの間にオプティマイザーが正確なフィルター係数を見積もることを許可しません。 ヒストグラム統計が C1 で収集されていても、オプティマイザーは、どの値が見込まれるかを判断できません。
「選択性のオーバーライド」機能によって、フィルター係数としてオプティマイザーが見積もる値を、より正確な値で置き換えるための推奨事項を受け取ることができます。 また、フィルター係数の値をご自身で設定することもできます。
SQL ステートメントのフィルター係数のセットは、選択性プロファイルを構成します。 「選択性のオーバーライド」機能を使用すると、選択性プロファイルを検証し、エラーがなければそれらをデプロイすることができます。
推奨事項を受け入れるか、またはご自身で設定することによってフィルター係数をオーバーライドした後、フィルター係数のセットで潜在的なエラーについて調べることができます。 そのあと、現在の SQL ステートメントの新しいアクセス・プランを確認できます。さらに、新しい選択性プロファイルをデプロイすることなく、そのアクセス・プランを元のアクセス・プランと比較することもできます。 索引アドバイザーをステートメントに対して実行することもできます。アドバイザーは新しいアクセス・プランを使用します。 ここで、アドバイザーの推奨事項を、元のアクセス・プランに基づいてアドバイザーが提示した推奨事項と比較できます。
さらにフィルター係数を変更することもできます。それらを再妥当性検査し、再テストし、デプロイできます。