Primärschlüssel in Dateigruppe verschieben (SQL Server 2012)

14

Wie kann ich einen gruppierten Primärschlüssel in eine neue Dateigruppe verschieben? Ich habe bereits einen möglichen "Algorithmus" gefunden, aber er ist schrecklich ineffizient:

  1. Nicht gruppiertes indiziertes Löschen (erfordert, dass sie neu sortiert und erstellt werden)
  2. Clustered-Index löschen (erfordert, dass die gesamte Tabelle neu sortiert wird)
  3. Neue Primärschlüsselbedingung erstellen (umfangreiche Sortieroperation)
  4. Erstellen Sie alle nicht gruppierten Indizes (Sortieren und Schreiben erforderlich)

Gibt es einen effizienteren Weg? Dies ist schrecklich ineffizient und wird lange dauern, da die Tabelle auf einem schwachen Server eine Größe von 50 GB hat.

Gibt es nicht eine Möglichkeit, all dies zu überspringen und einfach eine neue Dateigruppe neu zu erstellen? Das würde kein Sortieren von Daten erfordern.

usr
quelle

Antworten:

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

Dadurch bleibt die logische PK-Eigenschaft erhalten, obwohl sie in der Syntax nicht erwähnt wird.

Martin Smith
quelle