web-dev-qa-db-ja.com

統計を手動で更新する理由はありますか?

SQL Serverでは、統計はAuto Update Statistics in True(これがデフォルトです)。統計を手動で更新する理由はありますか?

19
jrara

もちろん、データが自動統計の頻度よりも頻繁に変化している場合(または、たとえば、ステータスや日付/タイムスタンプの更新など、行の20%未満が頻繁に更新されている場合)。または、テーブルが巨大で、自動統計更新をトリガーするのに十分な変化がない場合。または、フィルターされたインデックスがある場合( 自動統計のしきい値は依然として、フィルターされたインデックス内の行のサブセットの変更の%ではなく、テーブル全体の変更の%に基づいているため )。

21
Aaron Bertrand

さらに2つの(表面的な)理由:

自動更新統計は、新しい統計が準備できるまで、更新をトリガーしたクエリをブロックします。

...非同期で統計の自動更新も有効にしていない場合。次に、更新をトリガーしたクエリは、新しい統計を待機しませんが、古い誤った統計で実行される可能性があります。

また、比較的大きなテーブル(4,400万行、8.5 GB)を持つデータベースが統計の更新を開始すると、奇妙なブロッキングの問題が発生しました。しかし、私は実際に何が起こっているのかを追跡できるようになる前に、その申請を廃止しました。

7
db2

はい、自動統計は常にデフォルトのサンプリングレートで生成されることに注意してください。このデフォルトのサンプリングレートでは、データを表す統計が正確に生成されない場合があります。

http://sqlblog.com/blogs/elisabeth_redei/archive/2009/03/01/lies-damned-lies-and-statistics-part-i.aspx

5
Jimbo