为什么删除索引会导致执行插入语句?

时间:2019-05-08 10:01:47

标签: sql-server indexing constraints

我要在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。简而言之,当删除聚集索引时,所有其他索引都需要重建以指向堆中先前指向聚集索引条目的行。

0 个答案:

没有答案