web-dev-qa-db-ja.com

未使用のNONCLUSTERED INDEXを使用してもクエリの速度を向上させることはできますか?

これは奇妙な状況ですが、誰かが答えてくれることを期待しています。

パフォーマンスのトラブルシューティング中に、sp_BlitzIndexからのリクエストに応じて、NONCLUSTERED INDEXをテーブルに追加しました。翌日、その使用状況を確認したところ、0読み取り0スキャン/シーク、0シングルトンルックアップ)なので、無効にしました。

すぐに、INDEXを追加したときに最初に確認して解決しようとしていたのと同じアプリの遅延(パフォーマンスの問題)の不満が出ます。

理論的には、これは単なる偶然のように聞こえます。 INDEXは証明可能で、ある程度はNOT USEDでした。これを無効にするSHOULD NOTとすると、クエリのパフォーマンスが低下します。しかし、ほとんど[〜#〜] too [〜#〜]偶然です。

質問

だから私の質問は、単純に言えば、こうです:

それは可能な限り、その使用状況統計(DMV/sp_BlitzIndexから)が使用しないことを示すNONCLUSTERED INDEXであり、あったhelping影響を受けるテーブルでクエリのパフォーマンスがどういうわけか?

13
NateJ

はい。SQLServerは、そのインデックスからの統計がより正確で有用であると判断し、その統計を使用して推定を行い、計画を立てるときに可能です。

SQL Serverが1つのインデックスの統計を使用し、別のインデックスをスキャン/シークすることを決定した状況に遭遇しました。

編集-これは該当しない可能性があります。インデックスを無効にしたことに気づきました。私はそのシナリオをテストしていません。

13
jesijesi