单行删除时有大量“逻辑读取”

时间:2009-10-15 08:33:19

标签: sql-server logical-reads

当从表中删除其PrimaryKey行时,我得到大约44472个逻辑读取。现在该表有5-6个子表,它们将ForeignKeys链接到我想要删除的表的PK。

我不知道如何改善删除的效果。

有什么建议吗?

修改: 我添加了删除

的查询计划

http://img384.imageshack.us/img384/6255/deleteexecutionplan.png

修改: 我找到了一个解决方案(不确定它是否是理想的解决方案) - 它在下面的响应中。

3 个答案:

答案 0 :(得分:0)

查看单行删除的query plan

我认为你会发现正在对一个或多个“子”表进行表扫描。如果是这样,请考虑在该子表上的ForeignKey中添加索引。

(否则请将查询计划添加到您的问题中)

答案 1 :(得分:0)

你有FK约束吗?

我能想到的选项是

  • 将索引添加到子表中的FK列。
  • 删除约束(可能会出现孤立行的风险)。
  • 尝试减少子表的数量。

答案 2 :(得分:0)

This answer解决了这个问题,现在删除了像魅力一样的工作。我不确定我是否应该注意到任何缺点。