Mover chave primária para o grupo de arquivos (SQL Server 2012)

14

Como mover uma chave primária em cluster para um novo grupo de arquivos? Eu já encontrei um possível "algoritmo", mas é terrivelmente ineficiente:

  1. Eliminar indexados não agrupados em cluster (requer que eles sejam recolocados e reconstruídos)
  2. Eliminar índice agrupado (requer que toda a tabela seja usada)
  3. Criar nova restrição de chave primária (operação de classificação enorme)
  4. Crie todos os índices não agrupados em cluster (classificação e gravação necessárias)

Existe uma maneira mais eficiente? Isso é terrivelmente ineficiente e levará muito tempo, pois a tabela tem 50 GB de tamanho em um servidor fraco.

Não existe uma maneira de pular tudo isso e apenas reconstruir um novo grupo de arquivos? Isso não exigiria nenhuma classificação de dados.

usr
fonte

Respostas:

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

Isso preserva a propriedade PK lógica, apesar de não ter sido mencionada na sintaxe.

Martin Smith
fonte