Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (日本語) » SQL Anywhere サーバ - SQL の使用法 » クエリ処理 » クエリの最適化と実行 » オプティマイザの仕組み » オプティマイザの推定とカラム統計

 

オプティマイザによるヒューリスティックの使用方法

採用できそうな実行プラン内の各テーブルについて、オプティマイザは結果の一部となるローの数を推定します。ローの数は、テーブルのサイズとクエリの WHERE 句または ON 句に指定された制限によって異なります。

SQL Anywhere は、カラムに対する特定のクエリ述部を満たすローの数を、そのカラムに対するヒストグラムによって推定します。そのためには、指定の述部を満たす値を含むすべての範囲にあるローの数を合算します。クエリの結果セットに部分的に含まれるヒストグラムの値の範囲には、内挿法が使用されます。

多くの場合、オプティマイザはより高度なヒューリスティックを使用します。たとえば、オプティマイザは適切な統計がない場合にかぎってデフォルトの推定値を使用します。また、オプティマイザは、インデックスとキーを使用してロー数の推定精度を上げます。単一のカラムで推定する例を次に示します。

  • カラム内である値を持つロー数:そのカラムがユニーク・インデックスを持つかプライマリ・キーである場合、ロー数は 1 つだと推定します。

  • インデックス付きカラムで定数と比較したときのロー数:インデックスを調査し、比較条件を満たすローのパーセンテージを推定します。

  • 外部キーからプライマリ・キーへのロー数 (キー・ジョイン):テーブルの相対的サイズを使って推定します。たとえば、5000 ローのテーブルが 1000 ローのテーブルに対して外部キーを持つとき、オプティマイザは 1 つのプライマリ・キー・ローに対して 5 個の外部キー・ローがあると推定します。

参照

カラム値の分散の詳細については、次の各項を参照してください。