为什么放弃约束需要这么长时间?

时间:2017-12-01 21:15:53

标签: sql-server-2012 primary-key database-performance

SQL Server 2012 SP3

它是聚簇索引支持的主键。如果重要的话,表中有62M行,24GB数据,6.5GB索引(总共有3行)。

(编辑:声明最终失败,说dbo.SORT temporary run storage已填充PRIMARY(因此磁盘)。

2 个答案:

答案 0 :(得分:2)

这个大小的表格很难放弃约束。有各种解决方法,例如

https://dba.stackexchange.com/questions/53766/dropping-large-clustered-primary-key-fills-up-tempdb

如果删除主要约束,系统将重新组织磁盘上的数据。从资源供应的角度来看,这是昂贵的。

答案 1 :(得分:1)

删除聚簇索引(不必是PK)会将表转换为堆并重建所有非聚簇索引,因为行定位器已从聚簇键更改为RID。

您可以通过删除或禁用非聚集索引然后重新创建或重建来避免一些开销。

通常,SQL Server表应具有聚簇索引。