2011-07-12 3 views
0

SQL Server 2005データベースのテーブルからクラスタ化インデックスを削除していますが、実行に非常に時間がかかります。SQL Server 2005 Clustered Indexクラスタ化されていないインデックスが存在しない状態で長時間実行しています。

私はいくつかの調査を行い、クラスタ化インデックスを削除するには、非クラスタ化インデックスのポインタを更新するため、テーブル自体のRowIDを参照するため時間がかかることがあると判断しましたが、この特定のシナリオでは、テーブルに存在するインデックス。

データベースには多数の外部キーがあるため、そのうちの1つがクラスタ化インデックスIDを参照している可能性があります。

RowIDではなくクラスタ化インデックス参照を使用しているオブジェクトを特定する方法はありますか。

答えて

1

クラスタ化インデックスがある場合は、RowID - クラスタ化インデックスキーISの代わりにすべてが使用されます。

答えは、そのテーブルを参照するものです。

+0

これらのオブジェクトのリストを取得する方法はありますか? – David

+0

@David - あなたは 'sys.sysdepends'を見て依存関係を調べることができます。 – JNK

+0

私はsysdependsを調べて、ストアドプロシージャから問題のクラスタ化インデックスを持つテーブルへの参照が1つあります。 – David

0

外部キーの制約を確認する簡単で視覚的な方法は、ダイアグラムにテーブルを追加することです。次に、関係を確認し、クラスタード・インデックスを指しているかどうかを確認できます。

ただし、主キーである可能性が高いクラスタ化インデックスを削除する理由は何ですか?

+0

テーブルがパーティション化されており、クラスタ化インデックスがパーティション上に作成されていないため、インデックスを再設計する必要があります。問題のテーブルは非常に大きいので、操作を高速化する簡単な方法があるかどうかを判断しようとしています。 – David

関連する問題