テーブルの主キーである 2 つの列にクラスター化インデックスを持つテーブルがあります。次のように定義されています。
ALTER TABLE Table ADD CONSTRAINT [PK_Table] PRIMARY KEY CLUSTERED
(
[ColA] ASC,
[ColB] ASC
)WITH (SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF) ON [PRIMARY]
このクラスター化インデックス PK を削除し、次のようにクラスター化インデックスを追加し、以下に示す非クラスター化インデックスを使用して主キー制約を追加したいと考えています。
CREATE CLUSTERED INDEX [IX_Clustered] ON [Table]
(
[ColC] ASC,
[ColA] ASC,
[ColD] ASC,
[ColE] ASC,
[ColF] ASC,
[ColG] ASC
)WITH (PAD_INDEX = ON, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, IGNORE_DUP_KEY = OFF, FILLFACTOR = 90, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = OFF) ON [PRIMARY]
ALTER TABLE Table ADD CONSTRAINT
PK_Table PRIMARY KEY NONCLUSTERED
(
ColA,
ColB
) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
PK クラスター化インデックスを削除してから、新しいクラスター化インデックスを追加し、次に非クラスター化主キー インデックスを追加するつもりでしたが、既存のクラスター化インデックスを削除すると、テーブル データの順序が変更されることがわかりました (こちらの回答を参照してください) 。 SQL 2005 でクラスター化された主キーを削除すると発生します)、これは必要ではないと思います。テーブルは 1 TB をノックしているので、不要な並べ替えは避けたいと思っています。
私の質問は、既存の構造から望ましい構造に移行するための最良の方法は何ですか?
編集:明確にしたいだけです。テーブルは 1 TB ですが、残念ながら一時テーブルを作成するスペースがありません。一時テーブルを作成せずにそれを行う方法があれば教えてください。