在SQL 2005中删除聚簇主键时会发生什么

时间:2009-04-01 13:35:38

标签: sql-server sql-server-2005 primary-key constraints

我有一个PK约束 - 两列上的聚簇索引 - 我正在删除它。该命令在一小时后仍在运行。我原以为,因为我只是删除一个约束,操作几乎是瞬间完成的。 有人可以向我解释当我放弃PK时实际发生的事情吗?

3 个答案:

答案 0 :(得分:9)

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

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

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

请注意,这个答案并不是完全技术性的......但是它的意思是给你“哦,那就是发生了什么”的答案,这通常远远不够好。