2013-03-11 32 views
1

我有一个大的表,目前在SQL Server 2012年2500000行。主键被列为​​,并且由于主键是uniqueidentifier我想将其更改为对于初学者来说是非集群的(然后在将来的某个时候,可以在日期列上集群)。SQL Server - 超时删除从主键集群

问题是这个超时。禁用索引集群的速度如何很慢? 我能做些什么来加速并在超时之前完成,除了将此操作的超时时间增加到24小时?

回答

2

这将需要很长时间,因为它是一个聚集索引,删除它会导致整个表被重建为堆,并且由于您有很多行(并且如果您的表特别宽),这可能需要很长时间,具体取决于您的IO性能。

此外,您可能会仔细考虑在日期列上添加聚簇索引,因为这不能保证是唯一的(因此,SQL Server会将聚簇键添加到聚簇键中,从而降低其效率)如果您的日期并不总是按照升序或降序顺序添加,那么您将对表进行分段,强制SQL Server执行页面拆分以使值适合表格中间而不是结尾。

群集的最佳列是狭窄的,唯一的,并且总是增加/减少值。身份列是一个完美的候选人。