2011-01-27 10 views
2

私はデータベースが新しく、問題に苦しんでいます。私はSQL Server 2005を使用します。このシナリオでインデックスを使用する必要がありますか?

私は、別のテーブル(メインテーブル)上のトリガからデータを取得するテーブル(監査テーブル)を持っています。監査テーブルには重複が存在する可能性があるため、PKを持つことはできません。それは約1500万行を持っています。私はテーブルスキャンの結果となっている更新クエリを実行しています。

クラスタ化されていないインデックスを追加するかどうか、挿入/削除に与える影響をテストする方法を知りたい。 Adterがインデックスを追加すると、サーバーがテーブル/インデックスの再構築に忙しいため、トリガーからのデータが失われるシナリオがありますか?

おかげ ビクラム

+0

まず、監査テーブルにプライマリ/クラスタリングキーがありますか?そうでない場合は** **追加**!(引用:*プライマリキーがない場合はテーブルではありません!*)。あなたは主キーを追加することができます** - その目的のために 'INT IDENTITY'を追加する必要があっても - それを持っていないよりも優れています! –

+0

第2に、UPDATEステートメントはどのくらいのデータ(行数)に影響しますか?ほんの数行ですか?次に、UPDATEステートメントのWHERE句に**プライマリキー**!を追加した後でクラスタ化されていないインデックスが役立つ可能性があります。 –

+0

更新プログラムは、合計1,500万件のうち約500,000行に影響します。更新が続き、このテーブルから10日経過したデータも削除されます。これはクラスタリングされていないインデックスにどのような影響を及ぼしますか? – Vikram

答えて

3

あなたは常にプライマリキーとクラスタ化インデックスとしてIDENTITY列を追加することができます。自動インクリメントのため、インデックスの断片化には多くの問題があってはいけません。

サーバがインデックスを再構築するのに忙しいため、トリガからデータを失うことについて - いいえ、それは決して起こるべきではありません。

関連する問題