任意の述部で、オプティマイザーは選択性推定の次のいずれかのソースを使用できます。選択されたソースは、クエリのグラフィカルな長いプランに示されます。
Statistics オプティマイザーは、格納されたカラム統計を使用して選択性推定を計算できます。述部で定数が使用されている場合、格納された統計情報を使用できるのは、定数の選択性が統計情報に格納されるだけ重大な数値であるときだけです。
たとえば、述部 EmployeeID > 100
では、EmployeeID カラムの統計情報が存在する場合、カラム統計を選択性推定ソースとして使用できます。
Join
オプティマイザーは、参照整合性制約、一意性制約、またはジョインヒストグラムを使用して選択性推定を計算できます。ジョインヒストグラムは、T.X カラムおよび R.X カラムの使用可能な統計情報から T.X=R.X
の形式の述部に対して計算されます。
Column-column 選択性ソースとして使用できる参照整合性制約、一意性制約、またはジョインヒストグラムがないジョインの場合、オプティマイザーは選択性ソースとして、ジョインの結果セットの推定ロー数を 2 つのテーブルの直積のロー数で割った値を使用できます。
Column オプティマイザーは、カラム統計に格納されたすべての値の平均値を使用できます。
たとえば、述部 DepartmentName = expression
の選択性は、expression が定数でない場合、平均値を使用して計算できます。
Index オプティマイザーは、インデックスを調査して選択性推定を計算できます。通常、インデックスは、カラム統計などの選択性推定の他のソースが使用できない場合に選択性推定に使用されます。
たとえば、述部 DepartmentName = 'Sales'
では、オプティマイザーはカラム DepartmentName で定義されたインデックスを使用して Sales の値を持つローの数を推定できます。
User user_estimates データベースオプションが Disabled に設定されていない場合、オプティマイザーはユーザーが提供する選択性推定を使用できます。
Guess 使用できる適切なインデックスがない場合、参照先カラムの統計情報が収集されていない場合、または述部が複雑である場合、オプティマイザーは最も妥当な推測を行って選択性推定を計算できます。この場合は、各タイプの述部に組み込み規則が定義されます。
Computed たとえば、選択性を乗算するか、加算して選択性推定が計算された場合、非常に複雑な述部では、たとえば、選択性推定を 100% に設定し、選択性ソースを Computed に設定できます。
Always
述部が常に true の場合、選択性ソースは 'Always' になります。たとえば、述部 1=1
は常に true です。
Combined 上記の複数のソースを組み合わせて選択性推定が計算される場合、選択性ソースは 'Combined' になります。
Bounded SQL Anywhere が選択性推定に上限か下限またはその両方を設定した場合、選択性ソースは 'Bounded' になります。たとえば、限界は、推定値が 100% を超えたり、選択性が 0% より小さくなったりしないことを保証するために設定されます。
![]() |
DocCommentXchange で意見交換できます
|
Copyright © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |