[問題] LIMIT和ResultSet的問題 (Oracle DB)

作者: zelkova (*〞︶〝*)   2017-08-10 18:55:40
因為 OracleDB 沒有 LIMIT OFFSET 之類的用法,
假設我們要取第100000筆之後的300筆資料,
目前有看到有看到幾種模擬 LIMIT的方法,像是:
1. 子查詢先用 ROWNUM 將每筆編號直到100300號
然後父查詢再取出編號大於100000的
2. 第一次查詢用 ROWNUM 限制100300筆
第二次查詢用 ROWNUM 限制100000筆
將兩次查詢結果相減(MINUS)
之類的解法,
(因為 DB 用 ORDER BY 會非常慢,類似解法省略)
看起來好像都沒有顯著差異,時間看起來沒比較快
我在想直接 executeQuery(sql)
將返回的 ResultSet rs.next() 重複100000次
然後取後面的300筆資料,這樣是不是可以接受?
作者: b92310051 (蛤利)   2017-08-11 20:49:00
直接從sql下手就好了吧 >10000and <=10300不好嗎?
作者: adrianshum (Alien)   2017-08-11 22:00:00
Oracle 就 select * from (select xxx from yyy orderby zzz) where rownum > 10000 and rownum <= 10300
作者: ssccg (23)   2017-08-12 10:37:00
不就原po的方法1?
作者: swpoker (swpoker)   2017-08-15 00:12:00
這樣不知道耗多少的傳輸
作者: adrianshum (Alien)   2017-09-11 19:20:00
Ssccg: 不是。原post 說在子查詢先限制100300 行。這做法不行。

Links booklink

Contact Us: admin [ a t ] ucptt.com