データベースのスペースを浪費することに加えて、SQL Serverの不要なインデックスは、挿入および更新操作を遅くする可能性があります。データベースの原則に精通していない開発者は、実行中のクエリにとって意味のないテーブルインデックスを作成する傾向があります。
データベースのワークロードを分析し、特定の運用データベースで使用されない、または不要なインデックスのヒントを提供するためのSQL Server 2005/2008の一般的な手順またはツールはありますか?
ありがとう!
ここにかわいい小さなT-SQLスクリプトが表示されています( http://blog.sqlauthority.com/2008/02/11/sql-server-2005-find-unused- indexs-of-current-database / )は、SQL Server 2005で実行する必要がある未使用のインデックスを表示します。別のインデックス http://aspadvice.com/blogs/ssmith/archive /2008/03/31/Find-Unused-SQL-2005-Indexes-for-Current-DB.aspx ここでも。
Dm_db_index_usage_statsがこれらすべての鍵であるように見えます。かなりきちんと! ( http://msdn.Microsoft.com/en-us/library/ms188755.aspx を参照してください。今作成したいくつかの本番データベースを確認する必要があります。これらの統計がどのように見えるかを確認します。(smile)
編集:ここにいくつかの非常に素晴らしい追加の背景: http://blogs.msdn.com/craigfr/archive/2008/10/30/what-is-the-difference- between-sys-dm-db-index-usage-stats-and-sys-dm-db-index-operational-stats.aspx
Sys.dm_db_index_usage_statsの使用について留意すべきいくつかの事項:
お役に立てれば。
PSこれを読んで、SQL Server 2000に同等の方法があるかどうか疑問に思っている他の人にとって、もう1つ、いいえ、私たちは(当時チームにいたので)2005年以降の機能のみを追加しました。
SQLServerPediaに、これを行うためのスクリプトと、その使用方法に関するチュートリアルビデオを含むwiki記事があります。
使用されていないインデックスを見つけるための1つ:
http://sqlserverpedia.com/wiki/Find_Indexes_Not_In_Use
そして、あなたが追加すべきインデックスを見つけるためのもう一つ:
sys.dm_db_index_usage_statsからselect *に左結合してみてください。触れたことのないものがわかります。ただし、十分な時間が経過していることを確認してください。新しいインデックスが作成された翌日にこれを実行すると、十分な時間がない可能性があります。
また、インデックスは現在使用されていない可能性があることにも注意してください。ただし、データサイズが大きくなると、オプティマイザーはインデックスをより適切に使用できると見なします。通常、小さな(新しい)テーブルの場合、オプティマイザーは常にスキャンしますが、行数が転換点を超えたときにシークを開始します
デイブJ
編集:エヴァンは私をそれに打ち負かしました、しかし彼はその場にいます。
編集2:修正されたアドバイス、アンチジョインビットを忘れました!
インデックス関連のクエリを実行し、ブログでこれを示しました( http://dbalink.wordpress.com/2008/11/09/how-to-finding-index-usage-stats-with -dmv-in-tsql / )
SQLServerはあなたのビジネスを知らないことに注意してください。あなたの会社がどのようなビジネスの戦術的および戦略的決定を下し、行っており、これから行うかはわかりません。
これは、今日欠落しているインデックスが明日は関連性がないか、より関連性が高くなる可能性があることを意味します。同じロジックが、十分に活用されていない、またはまったく使用されていないインデックスにも当てはまります。
SQL ServerがRTMを実行したとき、私はDMテーブルで、それらのアクティビティを自動化することを考えて、熟読およびレポートするための独自のスクリプトを作成しました。SQLServerが要求していた不足しているインデックスレポートを一目見ます。 非常に動的なコンテンツのテーブルのインデックスに「含める」列として追加されるテーブルの残りのすべての列は、プロセスを自動化しないために必要な抑止力でした。
私は今でもスクリプトを使用していますが、会社のビジネス上の決定を自分の仕事に適用しています。小さな会社でできることです。
いつものように、あなたのデータを知り、あなたのビジネスを知り、あなたのビジネスの方向性を知ってください。