SQL Anywhere クエリ・オプティマイザが SQL 文のアクセス・プランの検索に費やす作業量を制御します。
0-15
9
optimization_level オプションは、SQL Anywhere オプティマイザが SQL データ操作言語 (DML) の最適化に費やす作業量を制御します。このオプションは、任意の SELECT ブロックについてオプティマイザが考慮する代替のジョイン方式の最大数を制御します。optimization_level の設定値が高いほど、オプティマイザが考慮するジョイン方式の最大数は大きくなります。
このオプションを 0 に設定すると、SQL Anywhere オプティマイザは実行のために考慮する最初のアクセス・プランを選択し、事実上、代替プランのコストベースの比較を避けることになります。さらに、レベル 0 では、ネストされたクエリのセマンティックな最適化が一部無効になります。このオプションが 0 よりも大きい値に設定されると、オプティマイザは代替方式を評価し、予想コストが最も低いものを選択します。このオプションがデフォルトの 9 よりも大きい値に設定されると、オプティマイザは代替方式をより積極的に検索し、その結果、最適化フェーズで経過する時間がはるかに長くなる可能性があります。
代表的なシナリオでは、アプリケーションが DML 文に対してより速い OPEN 時間を必要とする場合、このオプションは一時的に低いレベル (0、1、2 など) に設定されます。文が複雑であってもクエリの実行時間は非常に短いので、オプティマイザによって選択された特定のアクセス・プランはあまり重要ではないことがわかっています。optimization_level の PUBLIC 設定をデフォルトから変更することはおすすめできません。
optimization_level オプションの設定の結果は、optimization_goal と optimization_workload オプションの設定とは無関係です。
単純な DML 文 (特定の行を識別する WHERE 句に等号条件を含んだ単一ブロック、単一テーブルのクエリ) はヒューリスティックに最適化されるため、コストベースのオプティマイザをすべてバイパスします。単純な DML 文の最適化は、optimization_level オプションの設定からは影響を受けません。オプティマイザ・バイパス・メカニズムによって最適化された要求の数は、QueryBypassed 接続プロパティとして使用できます。
QueryBypassed 接続プロパティの詳細については、接続プロパティを参照してください。
INSERT、UPDATE、DELETE、SELECT、UNION、EXCEPT、INTERSECT の各文に OPTION 句を含めることによって、各文で指定したオプション設定をこれらのオプションに対するテンポラリ設定やパブリック設定よりも優先させることができます。次の項を参照してください。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |