2011-02-10 13 views
2

データベースのグループに対してクリーンアップを実行しています。まず、データベース内のすべてのインデックスを正しいファイルグループに取得します。SQL Server:インデックスのファイルグループを変更する(これもまたPKです)

現在、これらのインデックスは、DATAファイルグループとINDEXESファイルグループの間で混在しています。それらはすべてINDEXESファイルグループに移動する必要があります。

これは簡単にスクリプトで行うことができますが、主キーのインデックスをどのように処理するのが最適でしょうか?

次のコマンド

DROP INDEX table.indexname 

エラーが発生します。

An explicit DROP INDEX is not allowed on index 'Answer.PK_Answer'. It is being used for PRIMARY KEY constraint enforcement.

だから、最良の方法は何ですか?主キーを削除してからインデックスを削除し、主キーを再作成し、最後に正しいファイルグループにインデックスを再作成する必要がありますか?この方法には何らかの欠点がありますか?

+3

:前回の回答はいずれも、この部分を定めます別々に保管されるよりも)。 –

+0

はい、クラスタ化されています。私はテーブルを動かすことが、大きなテーブルのパフォーマンス上問題になる可能性があると思いますか?別のインデックスファイルグループを持つ – Sam

+0

は良い考えであるかもしれません。ファイルグループは別々のスピンドルにデータファイルで構成されていますか?通常は自分のFG –

答えて

0

あなたは低下し、ファイルグループ

は(DROP_EXISTING = ON)でテーブル名(回答) にクラスタ化インデックスPK_Answer をCREATE INDEXは、インデックスを再作成し、以下のステートメントを試すことができます。

0

彼は主キーを持っているので:

(DROP_EXISTING = ON)を持つユニークなクラスタ化インデックスPK_Answer ONのテーブル名(回答)を作成します。

0

他の誰かがこの情報を必要とした(私がした)場合は、再作成されたPRIMARY KEYを別の場所に移動する場合は、最後にFILEGROUPを追加します。クラスタ化インデックスではなく、データの順序を(定義されているので、インデックスは、また、テーブルを移動するインデックスを移動しようとすると、(PKのは、デフォルトでは、クラスタ化されている)クラスタ化されている場合は

CREATE UNIQUE CLUSTERED INDEX PK_TableName_Answer ON TableName(Answer) WITH(DROP_EXISTING = ON) ON [INDEX]; 
関連する問題