我在SQL Server 2008 R2中有一张表,大约有400行数据(非常少),它的主键是一个自增列,有聚集索引。该表被其他13个表通过引用完整性关联(没有级联删除或更新)。插入/更新/获取几乎是瞬间完成的 - 我们谈论的是分秒之间(应该是这样的)。然而,使用主键进行删除需要长达3分钟的时间,我从未见过快于1.5分钟的情况:
索引被严重碎片化 - 90%。我已经重建和重新组织了该索引(以及该表上的其他索引),但我无法将其降至50%以下。
此外,我对数据库进行了备份/还原到我的本地PC上,删除没有任何问题 - 少于一秒钟。
我尚未完全删除并重新添加聚集索引。这本身就是一个问题,因为当其他表引用PK索引时,SQL Server不允许您删除它。
有什么想法吗?
更新
我应该在原始帖子中包含这个。执行计划将“责任”归咎于聚集索引删除 - 70%。在引用此表的13个表中,执行计划表示没有一个表超过整个查询的3% - 几乎所有表都使用索引查找。
DELETE FROM [TABLE] WHERE [TABLE].[PK_WITH_CLUSTERED_INDEX] = 1
索引被严重碎片化 - 90%。我已经重建和重新组织了该索引(以及该表上的其他索引),但我无法将其降至50%以下。
此外,我对数据库进行了备份/还原到我的本地PC上,删除没有任何问题 - 少于一秒钟。
我尚未完全删除并重新添加聚集索引。这本身就是一个问题,因为当其他表引用PK索引时,SQL Server不允许您删除它。
有什么想法吗?
更新
我应该在原始帖子中包含这个。执行计划将“责任”归咎于聚集索引删除 - 70%。在引用此表的13个表中,执行计划表示没有一个表超过整个查询的3% - 几乎所有表都使用索引查找。