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查询具体的业务信息

参考链接Oracle的分页实现 - CSDN博客

上一篇下一篇

猜你喜欢

热点阅读