Sposta chiave primaria in filegroup (SQL Server 2012)


14

Come posso spostare una chiave primaria in cluster in un nuovo filegroup? Ho già trovato un possibile "algoritmo" ma è orribilmente inefficiente:

  1. Rilasciare indicizzati non cluster (richiede che siano ricorsi e ricostruiti)
  2. Elimina indice cluster (richiede il ricorso all'intera tabella)
  3. Crea nuovo vincolo chiave primaria (enorme operazione di ordinamento)
  4. Crea tutti gli indici non cluster (è necessario l'ordinamento e la scrittura)

C'è un modo più efficiente? Questo è orribilmente inefficiente e richiederà molto tempo poiché la tabella ha dimensioni di 50 GB su un server debole.

Non c'è un modo per saltare tutti questi e fare solo una ricostruzione su un nuovo filegroup? Ciò non richiederebbe alcun ordinamento dei dati.

Risposte:


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

Ciò preserva la proprietà PK logica nonostante non sia menzionata nella sintassi.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.