我要在SQL Server上删除索引。删除需要很长时间。使用sp_whoisactive,我看到我的SPID实际上正在表上执行INSERT语句!知道发生了什么吗?
SQL发送到服务器:
ALTER TABLE [dbo].[ODS_ORC_Parties] DROP CONSTRAINT [PK_ODS_ORC_Parties]
正在执行的代码:
insert [dbo].[ODS_ORC_Parties] select *, %%bmk%% from [dbo].[ODS_ORC_Parties]
肯定要删除索引(a)应该很快,而(b)不执行插入语句。
[EDIT]下面解释了发生的情况:https://dba.stackexchange.com/questions/157317/what-happens-when-you-delete-a-clustered-index-and-non-clustered-index-once-crea。简而言之,当删除聚集索引时,所有其他索引都需要重建以指向堆中先前指向聚集索引条目的行。