情况:
- 表 TBL 有大约 10k 个要删除的条目,
- 表 TBL 有 14 个子表,删除规则为“无操作”,
- 我想删除子表中的 10k 个条目和引用的条目。
程序:
- 删除子表中的记录,
- 禁用约束(如果没有禁用约束,则下一步中的删除需要永远),
- 删除 TBL 表中的记录,
- 启用约束。
有没有更优雅的方法来做到这一点?
问题是第三步耗时太长,因为它正在检查 14 个大表是否存在不存在的记录。我的程序有很好的执行时间,但我认为有更优雅的方式。
情况:
程序:
有没有更优雅的方法来做到这一点?
问题是第三步耗时太长,因为它正在检查 14 个大表是否存在不存在的记录。我的程序有很好的执行时间,但我认为有更优雅的方式。
听起来您需要在子表上索引外键。每次删除子表上没有索引的父记录时,它必须对子表进行全表扫描以检查外键约束是否被破坏。
使用索引,最坏的情况是索引范围扫描。
编辑:更多信息和一个脚本来确定这是否是你的问题可以在这里找到。 http://asktom.oracle.com/tkyte/unindex/index.html