2013-03-11 44 views
1

我有一個大的表,目前在SQL Server 2012年2500000行。主鍵被列爲​​,並且由於主鍵是uniqueidentifier我想將其更改爲對於初學者來說是非集羣的(然後在將來的某個時候,可以在日期列上集羣)。SQL Server - 超時刪除從主鍵集羣

問題是這個超時。禁用索引集羣的速度如何很慢? 我能做些什麼來加速並在超時之前完成,除了將此操作的超時時間增加到24小時?

回答

2

這將需要很長時間,因爲它是一個聚集索引,刪除它會導致整個表被重建爲堆,並且由於您有很多行(並且如果您的表特別寬),這可能需要很長時間,具體取決於您的IO性能。

此外,您可能會仔細考慮在日期列上添加聚簇索引,因爲這不能保證是唯一的(因此,SQL Server會將聚簇鍵添加到聚簇鍵中,從而降低其效率)如果您的日期並不總是按照升序或降序順序添加,那麼您將對錶進行分段,強制SQL Server執行頁面拆分以使值適合表格中間而不是結尾。

羣集的最佳列是狹窄的,唯一的,並且總是增加/減少值。身份列是一個完美的候選人。