4

我有一个 PK 约束——两列上的聚集索引——我正在删除它。一个小时后该命令仍在运行。我会认为,因为我只是删除一个约束,所以操作几乎是瞬时的。当我放弃 PK 时,有人可以向我解释一下引擎盖下到底发生了什么吗?

4

3 回答 3

9

聚集索引不仅仅是“一个约束”,它是一种存储方法。

当您删除它时,您的数据将从集群存储重新排序到堆存储

其他索引正在更新以引用RID's 而不是PRIMARY KEY值。

于 2009-04-01T13:49:43.520 回答
1

聚集索引数据,它可以解释运行所需的时间。

于 2009-04-01T13:37:24.533 回答
0

“CLUSTERED”索引将物理上按顺序在硬盘上写入表的记录。因此,删除或更改该索引可能会导致 SQL Server 基本上“碎片整理”(重新排序)您的硬盘驱动器(嗯,至少是该表的数据所在的部分)。

请注意,这个答案并不完全是技术性的......但它的目的是给你一个“哦,这就是正在发生的事情”的答案,这通常已经足够好了。

于 2009-04-01T13:53:26.117 回答