SQL Serverがデフォルトで保持する統計についての言及を聞いたことがあります。彼らは何を追跡しており、この情報を使用してデータベースを改善するにはどうすればよいですか?
統計は、クエリオプティマイザーがより適切な決定を行うのに役立つ動的メタデータの形式です。たとえば、テーブルに行が12行しかない場合は、インデックスを使用して検索を行う意味はありません。フルテーブルスキャンを実行するほうがよいでしょう。しかし、同じテーブルが100万行になると、おそらくインデックスを使用したほうがよいでしょう。ただし、一意の値がほとんどない列(たとえば、「M」または「F」のみを含む「sex」列である可能性がある)でそのテーブルをクエリすると、実際にはFTSの方がそのケースよりも優れている可能性があります。結果セットを構築するには、とにかくブロックを取得する必要があります。テーブルが99% "M"、1% "F"であるとしましょう。あるケースではFTSを使用するか、別のケースではインデックスを使用する必要があります。同じテーブル、同じクエリ、テーブルの内容に応じて4つの異なるクエリプランが存在する可能性があります。これらの種類のものは「統計」であり、それらは各データベースに個別です-同じテーブルとインデックス構造を持つ2つのデータベースでも異なる統計を持ちます。
要約すると、最新のデータベースエンジンには2種類のクエリ最適化があります。SQLの書き換え(ルールベースの最適化。コンパイラーがCを書き換えてより効率的になるようにする)と、データの正しいパスを選択する(コストベースの最適化) 、実行時にホットスポットを識別するJITコンパイラのように)。クエリオプティマイザーが明らかに何か間違っていることを発見した場合にのみ、これについて心配する必要があります(たとえば、knowインデックスのときにFTSを選択するほうがよいでしょう)。
これらは /クエリoptimiser (MSDNのホワイトペーパー)で使用され、インデックスや列の値の分布を追跡します。
あなたののみの懸念は 定期的に更新する である必要があります:DBエンジンをそのままにしてください