Pindahkan Kunci Utama ke Filegroup (SQL Server 2012)

14

Bagaimana saya bisa memindahkan kunci utama yang dikelompokkan ke filegroup baru? Saya sudah menemukan kemungkinan "algoritma" tetapi sangat tidak efisien:

  1. Drop diindeks non-clustered (mengharuskan mereka untuk resored dan dibangun kembali)
  2. Drop indeks berkerumun (mengharuskan seluruh tabel harus disembunyikan)
  3. Buat batasan kunci primer baru (operasi sortir besar)
  4. Buat semua indeks non-cluster (diperlukan pengurutan dan penulisan)

Apakah ada cara yang lebih efisien? Ini sangat tidak efisien dan akan memakan waktu lama karena tabel berukuran 50GB pada server yang lemah.

Apakah tidak ada cara untuk melewati semua ini dan hanya melakukan membangun kembali pada grup file baru? Itu tidak akan memerlukan penyortiran data.

usr
sumber

Jawaban:

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

Ini mempertahankan properti PK logis meskipun tidak disebutkan dalam sintaksis.

Martin Smith
sumber