43

データベース チューニング アドバイザーは、データベースに多数の統計を作成することを推奨しています。私はSQLの一種なので、そのような生き物に出くわしたのはこれが初めてでした. MSDN のエントリは少しわかりにくかったです。これが正確に何をするのか、なぜそれが良い考えなのか説明してもらえますか?

4

5 に答える 5

38

コスト ベースのクエリ最適化は、ヒストグラムと行数を使用して、クエリ プランの実行コストをヒューリスティックに見積もる手法です。クエリを SQL Server に送信すると、クエリが評価され、ヒューリスティックを使用してコストを見積もる一連のクエリ プランが生成されます。次に、最も安価なクエリ プランを選択します。

クエリ オプティマイザは統計を使用して、クエリ プランのコストを計算します。統計が欠落しているか古くなっている場合、計画を推定するための正しいデータがありません。この場合、中程度または高度に最適化されていないクエリ プランが生成される可能性があります。

SQL Server は (ほとんどの状況で) ほとんどのテーブルとインデックスの統計を自動的に生成しますが、これらを補足したり、強制的に更新したりすることができます。クエリ チューニング ウィザードは、欠落している統計を発見したか、統計を追加する必要があるクエリ内の結合を特定した可能性があります。

于 2008-09-24T16:58:53.927 に答える
8

統計は、クエリに特定のインデックスを使用するかどうかを決定するためにオプティマイザによって使用されます。統計がないと、オプティマイザーは特定の条件に一致する行の数を知る方法がないため、「多くの行」の場合に最適化する必要があり、最適ではない可能性があります。

于 2008-09-24T16:21:44.343 に答える
3

簡単に言えば、データベースが効果的に機能するように準備します。統計を準備することにより、データベースは (実行計画を決定する前に) 最も効率的なルートとなる可能性が高いものを認識します。

于 2008-09-24T16:16:12.563 に答える
2

基本的には、使用しているインデックスの種類、行数などで SQL を最新の状態に保つだけです。これにより、SQL はクエリの実行方法をより正確に見積もることができます。統計を最新の状態に保つことは良いことです。

于 2008-09-24T16:16:15.853 に答える
2

BOLから...

テーブルまたはインデックス付きビューの指定された列または列のセットに対して、ヒストグラムおよび関連する密度グループ (コレクション) を作成します。文字列要約統計は、char、varchar、varchar(max)、nchar、nvarchar、nvarchar(max)、text、および ntext 列で構築された統計にも作成されます。クエリ オプティマイザーは、この統計情報を使用して、データを取得または更新するための最も効率的なプランを選択します。最新の統計により、オプティマイザーはさまざまなクエリ プランのコストを正確に評価し、高品質のプランを選択できます。

于 2008-09-24T16:16:18.677 に答える