web-dev-qa-db-ja.com

主キーをファイルグループに移動する(SQL Server 2012)

クラスター化された主キーを新しいファイルグループに移動するにはどうすればよいですか?私はすでに可能な「アルゴリズム」を見つけましたが、それは恐ろしく非効率的です:

  1. クラスター化されていないインデックスを削除します(再ソートして再構築する必要があります)
  2. クラスター化インデックスの削除(テーブル全体を再ソートする必要があります)
  3. 新しい主キー制約を作成する(巨大なソート操作)
  4. すべての非クラスター化インデックスを作成する(並べ替えと書き込みが必要)

より効率的な方法はありますか?これはひどく非効率的で、弱いサーバーではテーブルのサイズが50GBであるため、長い時間がかかります。

これらすべてをスキップして新しいファイルグループで再構築する方法はありませんか?データの並べ替えは必要ありません。

14
usr
CREATE UNIQUE CLUSTERED INDEX Your_PK_Name
    ON YourTable(YourColumnList)
WITH (DROP_EXISTING =  ON )
ON [YourOtherFileGroup]

これは、構文では言及されていませんが、論理PKプロパティを保持します。

25
Martin Smith