Przenieś klucz podstawowy do grupy plików (SQL Server 2012)

14

Jak mogę przenieść klastrowany klucz podstawowy do nowej grupy plików? Znalazłem już możliwy „algorytm”, ale jest on okropnie nieefektywny:

  1. Usuń indeksowane nieklastrowane (wymaga ich ucieczki i przebudowania)
  2. Upuść indeks klastrowy (wymaga zastosowania całej tabeli)
  3. Utwórz nowe ograniczenie klucza podstawowego (operacja ogromnego sortowania)
  4. Utwórz wszystkie indeksy nieklastrowane (wymagane sortowanie i zapis)

Czy istnieje bardziej skuteczny sposób? Jest to okropnie nieefektywne i zajmie dużo czasu, ponieważ stół ma rozmiar 50 GB na słabym serwerze.

Czy nie ma sposobu, aby pominąć je wszystkie i po prostu przebudować nową grupę plików? Nie wymagałoby to żadnego sortowania danych.

usr
źródło

Odpowiedzi:

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

Zachowuje to logiczną właściwość PK, mimo że nie jest wymieniona w składni.

Martin Smith
źródło