【发布时间】:2013-05-22 13:31:13
【问题描述】:
以下查询:
DELETE FROM attachmentdata
WHERE attachmentid IN
( SELECT attachmentid
FROM attachments
WHERE pageid IN
( SELECT contentid FROM content_delete )
);
如果内部嵌套的 SELECT 查询返回一个小列表(可能是几百个),则可以完美运行。
但现在我试图在将返回 10000 - 15000 行的东西上运行它,这需要很长时间。我运行了查询,45 分钟后没有任何反应。
是否可以修改查询,使内部 SELECT 返回的每 100 个结果都转到外部 DELETE 查询,然后转到下一个 100 个结果?
【问题讨论】:
-
一般情况下,您必须使用原始 SQL 之外的脚本语言来执行此操作。
-
@GordonLinoff - 如果解决方案使用 shell / bash 脚本就可以了。
-
@user1068636 。 . .在 Oracle 中,它将是 PL/SQL 脚本。
标签: sql oracle11g query-optimization