gpt4 book ai didi

SQL Server - PK 删除性能不佳

转载 作者:行者123 更新时间:2023-12-03 02:49:47 25 4
gpt4 key购买 nike

我在 SQL Server 2008 R2 中有一个表,由大约 400 行组成(几乎什么都没有)——它在主键(这是一个标识)上有一个聚集索引。该表通过引用完整性(无级联删除或更新)被大约 13 个其他表引用。

插入/更新/获取几乎是即时的 - 我们正在谈论瞬间(正如预期的那样)。然而,使用 PK 的删除需要长达 3 分钟的时间,而且我从未见过它比 1.5 分钟更快:

DELETE FROM [TABLE] WHERE [TABLE].[PK_WITH_CLUSTERED_INDEX] = 1

该索引严重碎片化 - 90%。我重建并重新组织了该索引(以及该表上的其余索引),但我无法将其降低到 50% 以下。

此外,我将数据库备份/恢复到本地 PC,删除时没有任何问题 - 不到一秒。

我没有做的一件事是完全删除聚集索引并重新添加它。这本身就是一个问题,因为 SQL Server 不允许您在其他表引用 PK 索引时删除该索引。

有什么想法吗?

更新

我应该将其包含在我原来的帖子中。执行计划将“责任”归咎于聚集索引删除 - 70%。执行计划显示,在引用该表的 13 个表中,没有一个表超过总体查询的 3% - 几乎所有命中都在索引查找上。

最佳答案

如果删除一行,数据库必须检查 13 个表中是否没有引用该行。引用您要从中删除的表的其他表的外键列上是否有足够的索引?

关于SQL Server - PK 删除性能不佳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3989402/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com