将主键移动到文件组 (SQL Server 2012)

usr*_*usr 16 index sql-server filegroups sql-server-2012

如何将集群主键移动到新文件组?我已经找到了一种可能的“算法”,但它的效率非常低:

  1. 删除非聚集索引(需要重新使用和重建它们)
  2. 删除聚集索引(需要对整个表进行重新排序)
  3. 创建新的主键约束(巨大的排序操作)
  4. 创建所有非聚集索引(需要排序和写入)

有没有更有效的方法?这是非常低效的,并且需要很长时间,因为表在弱服务器上的大小为 50GB。

有没有办法跳过所有这些并在新文件组上重建?这不需要对数据进行任何排序。

Mar*_*ith 29

CREATE UNIQUE CLUSTERED INDEX Your_PK_Name
    ON YourTable(YourColumnList)
WITH (DROP_EXISTING =  ON )
ON [YourOtherFileGroup]
Run Code Online (Sandbox Code Playgroud)

这保留了逻辑 PK 属性,尽管它在语法中没有被提及。