【发布时间】:2009-04-01 13:35:37
【问题描述】:
我有一个 PK 约束 - 两列上的聚集索引 - 我正在删除它。一个小时后该命令仍在运行。我会认为,因为我只是删除一个约束,所以操作几乎是瞬时的。 当我放弃 PK 时,有人可以向我解释一下幕后实际发生了什么吗?
【问题讨论】:
标签: sql-server sql-server-2005 primary-key constraints
我有一个 PK 约束 - 两列上的聚集索引 - 我正在删除它。一个小时后该命令仍在运行。我会认为,因为我只是删除一个约束,所以操作几乎是瞬时的。 当我放弃 PK 时,有人可以向我解释一下幕后实际发生了什么吗?
【问题讨论】:
标签: sql-server sql-server-2005 primary-key constraints
聚集索引不仅仅是“一种约束”,它是一种存储方式。
当您删除它时,您的数据将从集群存储重新排序到堆存储
正在更新其他索引以引用 RID 而不是 PRIMARY KEY 值。
【讨论】:
聚集索引是数据,它可以解释运行时间。
【讨论】:
“CLUSTERED”索引将按物理顺序将表的记录写入硬盘上。因此,删除或更改该索引可能会导致 SQL Server 基本上对您的硬盘进行“碎片整理”(重新排序)(嗯,至少是该表的数据所在的部分)。
请注意,这个答案并不完全是技术性的......但它的目的是给你“哦,这有点像正在发生的事情”的答案,这通常已经足够好了。
【讨论】: