SQL Anywhere は、統計情報を基に各文の実行に最も効率的な方法を判別します。SQL Anywhere は、それらの統計を自動的に収集、更新します。これらの統計は、データベースのシステムテーブル ISYSCOLSTAT に永久的に格納されます。ある文の処理中に収集された統計は、以降の文の効率的な実行方法を見いだすときに使用できます。
場合によっては、統計情報が不正確になったり、関連統計情報が使用不能になったりすることがあります。このような状況がもっとも発生しやすいのは、大量のデータが追加、更新、または削除されてから実行されたクエリが少ない場合です。このような場合は、CREATE STATISTICS 文を実行します。
特定の実行プランに問題がある場合は、オプティマイザに関するヒントを使用して、特定のインデックスの使用を要求できます。
ただし、特異な状況では、この方法では効果的でないことがあります。そのような場合、明示的な選択性推定を指定することでパフォーマンスを改善できることがあります。
オプティマイザは対象となる各テーブルについて、結果の一部となるローの数を推測します。条件の成功する確率がオプティマイザの推定とは異なることがあらかじめ判明している場合、ユーザ推定を明示的に探索条件として指定できます。
予測値はパーセントで表します。この値は、正の整数または小数です。
進行ベースで使用される文には、できるかぎり明示的な推定を指定しないようにしてください。データが変更されると、明示的な推定が不正確になり、オプティマイザが誤って不適切なプランを選択することがあります。明示的な選択性推定を使用する場合は、数値が正確であることを確認してください。たとえば、0% または 100% の値を指定してインデックスを強制的に使用することはしないでください。
ユーザ推定を無効にするには、データベースオプション user_estimates を Off に設定します。user_estimates のデフォルト値は Override-Magic です。これは、オプティマイザが条件に MAGIC (デフォルト) 選択性値を使用する場合にのみ、ユーザ提供の選択性推定が使用されることを意味します。オプティマイザは、述部の選択性を正確に予測できない場合の最終手段として MAGIC 値を使用します。
![]() |
DocCommentXchange で意見交換できます
|
Copyright © 2013, SAP AG or an SAP affiliate company. - SAP Sybase SQL Anywhere 16.0 |