我有一个 PK 约束——两列上的聚集索引——我正在删除它。一个小时后该命令仍在运行。我会认为,因为我只是删除一个约束,所以操作几乎是瞬时的。当我放弃 PK 时,有人可以向我解释一下引擎盖下到底发生了什么吗?
Mr. Flibble
问问题
1704 次
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 回答