【发布时间】:2017-07-25 06:44:07
【问题描述】:
我的脚本是正确的,但删除 11320860 条记录的执行时间约为 5 分钟。是否有其他方法可以编写此查询以减少执行时间?
场景是相同的记录组合可以有 E 和 A 记录。如果同一组合至少存在一个 E 记录,则代码会尝试删除 A 和 E 记录。
Delete from tableA u
WHERE EXISTS
(Select 1 from tableA w
WHERE w.a = u.a
AND w.b = u.b
AND w.c = u.c
AND w.d = u.d
AND w.flag ='E' ); - Del about 11320860 records in 4 Mins
【问题讨论】:
-
为什么不干脆做,
delete from tableA where flag = 'E';你的查询会有不必要的开销 -
可以使用合并
-
场景是相同的记录组合可以有E和A记录。如果同一组合至少存在一个 E 记录,则代码会尝试删除 A 和 E 记录。
标签: sql oracle sql-delete dml