クエリ・オプティマイザで使用される選択性推定のソースを提供します。
ESTIMATE_SOURCE( column-name [, value [, relation-string ] ] )
column-name 調査されるカラムの名前。
value カラムが比較される値。デフォルト値は NULL です。
relation-string 比較に使用される比較演算子。一重引用符で囲んで指定します。このパラメータに使用できる値は、'='、'>'、'<'、'>='、'<='、'<>'、'!='、'!<'、'!>' です。デフォルトは '=' です。
選択性推定のソースは、次のいずれかです。
Statistics は、値が指定され、カラムの値の平均による選択性を推定する統計情報が格納されている場合に使用されます。統計情報を使用できるのは、指定した値の選択性が統計情報に格納されるだけ重大な数値である場合だけです。現在、値が重大であると見なされるのは、少なくともローの 1% で値が出現する場合です。
Column は、値の選択性がローの 1% 未満で出現すること以外は、Statistics とほぼ同じです。この場合、使用される選択性は、統計情報に格納された、ローの 1% 未満で出現するすべての値の平均値です。
Guess は、使用できる適切なインデックスがなく、カラムの統計情報がまったく収集されていない場合に返されます。この場合は、組み込み規則が使用されます。
Column-column は、使用される推定がジョインの選択性の場合に返されます。この場合、推定は、ジョインの結果セットのロー数を 2 つのテーブルの直積のロー数で割った値です。
Index は、選択性の推定に使用できる統計情報はないが、選択性推定のためにインデックスを調査できる場合に使用されます。
User は、ユーザ指定の推定が存在し、user_estimates データベース・オプションが Disabled に設定されていない場合に返されます。
詳細については、user_estimates オプション [データベース]を参照してください。
Computed は、他の情報に基づいて、オプティマイザが統計情報を計算する場合に返されます。たとえば、SQL Anywhere は複数のカラムの統計情報を管理しません。したがって、x=5 と y=10 などの複数のカラムの等式に関する推定が必要なとき、カラム x とカラム y の統計情報が存在する場合は、オプティマイザが各カラムの推定した選択性を乗算して推定値を生成します。
Always は、テストが明らかに真の場合に使用されます。たとえば、値が 1=1 の場合です。
Combined は、オプティマイザが前述の複数のソースを使用し、それらを組み合わせる場合に使用されます。
Bounded は、他のいずれかのソースに制限を加えることができます。Bounded は、SQL Anywhere が推定に上限か下限またはその両方を設定したことを示します。オプティマイザは、推定値が論理範囲を超えないようにするためにこれらの制限を設定します。たとえば、推定値が 100% を超えたり、選択性が 1 ローより小さくならないことを保証します。
value が NULL の場合、比較演算子 '=' と '!=' はそれぞれ IS NULL 条件と IS NOT NULL 条件として解釈されます。
SQL/2003 ベンダ拡張。
次の文は、値 Index を返します。これは、クエリ・オプティマイザがインデックスを調査して選択性を推定したことを意味します。
SELECT FIRST ESTIMATE_SOURCE( EmployeeID, 200, '>' ) FROM Employees ORDER BY 1; |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |