SQL*_*Boy 3 sql-server clustered-index sql-server-2008-r2 nonclustered-index sql-server-2014
集群索引和非集群索引创建后,当我们删除它们时会发生什么?
根据 Clustered Index ,叶子级别的数据会发生什么?
来自 MSDN:
删除聚集索引时,存储在聚集索引叶级的数据行将存储在无序表(堆)中。删除聚集索引可能需要一些时间,因为除了删除聚集索引之外,还必须重建表上的所有非聚集索引,以使用指向堆的行指针替换聚集索引键。删除表上的所有索引时,首先删除非聚集索引,最后删除聚集索引。这样,就不必重建索引。
https://technet.microsoft.com/en-us/library/ms190691(v=sql.105).aspx
至于非聚集索引删除,它们不会删除任何数据,这是一个元数据操作,索引页只是被释放。想想 TRUNCATE 与 DELETE,TRUNCATE 只是释放页面,你就完成了。删除非聚集索引非常相似,因此当您删除一个索引时会闪电般快速(除非您被阻止)。