Oracle 分页
2018-09-10 本文已影响0人
zx_freedom
一、 ROWNUM
一般情况下使用这种查询,
但是数据量增大以后,比如共10000页 想看第9999页 这种情况 内层查询数据量十分大 查询十分缓慢,这种时候推荐使用第二种分页方式
SELECT *
FROM (SELECT ROW_.*, ROWNUM ROWNUM_
FROM (SELECT *
FROM TABLE1
WHERE TABLE1_ID = XX
ORDER BY GMT_CREATE DESC) ROW_
WHERE ROWNUM <= 20)
WHERE ROWNUM_ >= 10;
二 、ROWID
这种情况只适合
比如10000条记录中我们经常需要查9000-9100及其以后的数据
SELECT *
FROM (SELECT RID
FROM (SELECT R.RID, ROWNUM LINENUM
FROM (SELECT ROWID RID
FROM TABLE1
WHERE TABLE1_ID = XX
ORDER BY order_date DESC) R
WHERE ROWNUM <= 20)
WHERE LINENUM >= 10) T1,
TABLE1 T2
WHERE T1.RID = T2.ROWID;
其中内层查询T1只查询ROWID,其余外层查询T2查询具体的业务信息