7月にサーバーが最後に再起動されて以来蓄積されているDMV統計によると、数百の未使用のインデックスを持つ非常に大きなデータベースがあります。DBAの1人が次の警告文を作成しましたが、私には意味がありません。
- インデックスを削除する前に、クエリオプティマイザーがこのインデックスの存在を必要とする可能性があるため、一意性制約が適用されていないことを確認する必要があります。
- インデックスが作成されるたびに、そのインデックスに関連する統計もSQL Serverに作成されます。クエリはインデックスを使用していない可能性がありますが、統計を使用している可能性があります。そのため、インデックスを削除した後、特定のクエリパフォーマンスが非常に悪くなるという状況が発生する場合があります。SQL Serverは、統計の使用統計を保持しません。データベースで「統計の自動作成」機能を有効にしていますが、クエリオプティマイザーが不足している統計を作成する前に、すべてのパラメーターを内部で満たす必要があるかわかりません。
#1に関しては、SQL Serverは実際にインデックスのシークを行って、挿入/更新が行われる前に一意性を判断するため、インデックスは使用されていないようには見えません。
#2に関して、これは本当に可能ですか?
ちなみに、インデックスを使用しないという場合、シークもスキャンもありません。