【发布时间】:2011-11-12 18:04:12
【问题描述】:
我需要从包含 1kkk 行的表的 java 代码中执行 SELECT 查询,因此结果集将接近 1kk 行。这就是为什么我需要限制它,并多次运行选择查询,每次只检索 10k 行。在获得 10k 行后,我对其进行更新,以便在下一次 SELECT 中不会检索到它们。 问题是 - 在从表中的第一行查看的每个选择 oracle 中,它会降低性能。 如何使用 OFFSET 避免 oracle 从第一行查找并传递已更新的行?
【问题讨论】:
-
你想做什么?我无法想象用户浏览这么多结果。我无法想象分批工作的过程
-
为什么需要限制更新的结果集?在提交之前,我会定期运行一次影响数百万行的更新语句。
-
是否无法识别已经更新的行并忽略它们?可能会根据更新的记录存储批号
-
我正在尝试根据一些逻辑更新数据库。我需要限制,因为我无法创建包含超过 100 万行的结果集对象。该程序将落在 HeapSpace 大小过载。
-
如果您有 Oracle 12cR1 或更高版本,您可以使用
OFFSET:stackoverflow.com/a/26051830/1461424