Oracle SQL:将大型结果分块

Oracle SQL:将大型结果分块,sql,oracle,oracle11g,Sql,Oracle,Oracle11g,我有一个很大的表,太大了,无法一次查询。我需要一个有效的策略来将结果分块——允许增量更新并避免超时 我想有比这更聪明的解决办法 SELECT tbl1.ID, tbl2.* FROM (SELECT * FROM FOOUSER.TABLE1 ORDER BY ID) tbl1 JOIN FOOUSER.TABLE2 ON tbl1.ID = tbl2.ID2 WHERE ID > :LASTMAXVALUE AND ROWNUM &l

我有一个很大的表,太大了,无法一次查询。我需要一个有效的策略来将结果分块——允许增量更新并避免超时

我想有比这更聪明的解决办法

SELECT
    tbl1.ID,
    tbl2.*
FROM 
    (SELECT * FROM FOOUSER.TABLE1 ORDER BY ID) tbl1
JOIN 
    FOOUSER.TABLE2 ON tbl1.ID = tbl2.ID2
WHERE 
    ID > :LASTMAXVALUE
    AND ROWNUM <= 1000
ORDER BY 
    tbl1.ID;

。。其中:LASTMAXVALUE是上次查询中ID的最大值,ROWNUM SELECT*from FOOUSER.TABLE1 ORDER BY ID FETCH FIRST 1000 ROWS ONLY tbl1可能有效。谢谢,但将在第二次查询中获取FIRSTwork-假设我想要从ID>1000开始的下一个1000个项目?…按ID偏移量1000排序仅获取前1000行…@jarlh iirc,这个习惯用法不适用于11g。如果您的实际目标是对结果集执行更新,那么最好的方法可能是不更新。在某些情况下,如果更新对表的影响足够大,则在新表中插入新数据并重命名它或分区(如果适用)会更有帮助。记住,你必须考虑你的应用程序可用性要求和其他因素。