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

删除许多带有子表的记录

  •  1
  • Chobicus  · 技术社区  · 17 年前

    情况:

    • 表TBL有约10k个条目需要删除,
    • 表TBL有14个子表,删除规则为“无操作”,
    • 我想删除子表中的10k个条目和引用的条目。

    程序:

    • 删除子表中的记录,
    • 启用约束。

    问题是第三步耗时太长,因为它正在检查14个大表中是否存在不存在的记录。我的程序执行时间很长,但我认为还有更优雅的方法。

    1 回复  |  直到 12 年前
        1
  •  4
  •   Daniel Emge    17 年前

    听起来你需要在子表上为外键建立索引。每次删除子表上没有索引的父记录时,它都必须对子表进行全表扫描,以检查外键约束是否被破坏。

    对于索引,最坏的情况是索引范围扫描。

    编辑 : http://asktom.oracle.com/tkyte/unindex/index.html