SQL Serverでは、統計はAuto Update Statistics
in True
(これがデフォルトです)。統計を手動で更新する理由はありますか?
もちろん、データが自動統計の頻度よりも頻繁に変化している場合(または、たとえば、ステータスや日付/タイムスタンプの更新など、行の20%未満が頻繁に更新されている場合)。または、テーブルが巨大で、自動統計更新をトリガーするのに十分な変化がない場合。または、フィルターされたインデックスがある場合( 自動統計のしきい値は依然として、フィルターされたインデックス内の行のサブセットの変更の%ではなく、テーブル全体の変更の%に基づいているため )。
さらに2つの(表面的な)理由:
自動更新統計は、新しい統計が準備できるまで、更新をトリガーしたクエリをブロックします。
...非同期で統計の自動更新も有効にしていない場合。次に、更新をトリガーしたクエリは、新しい統計を待機しませんが、古い誤った統計で実行される可能性があります。
また、比較的大きなテーブル(4,400万行、8.5 GB)を持つデータベースが統計の更新を開始すると、奇妙なブロッキングの問題が発生しました。しかし、私は実際に何が起こっているのかを追跡できるようになる前に、その申請を廃止しました。
はい、自動統計は常にデフォルトのサンプリングレートで生成されることに注意してください。このデフォルトのサンプリングレートでは、データを表す統計が正確に生成されない場合があります。