Переместить первичный ключ в файловую группу (SQL Server 2012)

14

Как я могу переместить кластерный первичный ключ в новую файловую группу? Я уже нашел возможный «алгоритм», но он ужасно неэффективен:

  1. Удалить некластеризованные индексы (требуется их восстановление и перестроение)
  2. Удалить кластеризованный индекс (требует пересчета всей таблицы)
  3. Создать новое ограничение первичного ключа (огромная операция сортировки)
  4. Создать все некластеризованные индексы (требуется сортировка и запись)

Есть ли более эффективный способ? Это ужасно неэффективно и займет много времени, так как размер таблицы составляет 50 ГБ на слабом сервере.

Разве нет способа пропустить все это и просто перестроить новую файловую группу? Это не потребовало бы никакой сортировки данных.

USR
источник

Ответы:

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

Это сохраняет логическое свойство PK, хотя оно не упоминается в синтаксисе.

Мартин Смит
источник