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

看板java作者 (*〞︶〝*)時間7年前 (2017/08/10 18:55), 編輯推噓2(205)
留言7則, 4人參與, 最新討論串1/1
因為 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筆資料,這樣是不是可以接受? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 218.161.45.91 ※ 文章網址: https://www.ptt.cc/bbs/java/M.1502362544.A.4D6.htmlzelkova:轉錄至看板 Database 08/10 18:56

08/11 20:49, , 1F
直接從sql下手就好了吧 >10000and <=10300不好嗎?
08/11 20:49, 1F

08/11 22:00, , 2F
Oracle 就 select * from (select xxx from yyy order
08/11 22:00, 2F

08/11 22:00, , 3F
by zzz) where rownum > 10000 and rownum <= 10300
08/11 22:00, 3F

08/12 10:37, , 4F
不就原po的方法1?
08/12 10:37, 4F

08/15 00:12, , 5F
這樣不知道耗多少的傳輸
08/15 00:12, 5F

09/11 19:20, , 6F
Ssccg: 不是。原post 說在子查詢先限制100300 行。這
09/11 19:20, 6F

09/11 19:20, , 7F
做法不行。
09/11 19:20, 7F
文章代碼(AID): #1PZ3kmJM (java)
文章代碼(AID): #1PZ3kmJM (java)