代码之家  ›  专栏  ›  技术社区  ›  sirrocco

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

  •  0
  • sirrocco  · 技术社区  · 15 年前

    当从表中删除一行的primarykey时,我得到了大约44472个逻辑读取。现在这个表有5-6个子表,它们的foreignkey链接到我要从中删除的表的pk。

    我不知道该怎么做才能提高删除的性能。

    有什么建议吗?

    编辑: 我为删除添加了查询计划

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

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

    3 回复  |  直到 14 年前
        1
  •  0
  •   Ian Ringrose    15 年前

    看看 query plan 对于单行删除。

    我想您会发现正在对一个或多个“子”表进行表扫描。如果是这样,请考虑将foreignkey上的索引放入该子表中。

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

        2
  •  0
  •   Jeremy French    15 年前

    你有FK约束吗?

    我能想到的选择是

    • 向子表中的FK列添加索引。
    • 删除约束(可能会有孤立行的风险)。
    • 尝试减少子表的数量。
        3
  •  0
  •   Community datashaman    7 年前

    This answer 解决了这个问题,现在删除工作就像一个魔咒。我不确定我是否应该知道有什么不好的地方。

    推荐文章