Oracle 分页

一、 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博客

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 方法一 根据rowid来分 SELECT *FROM EMPWHERE ROWID IN(SELECT RIDFR...
    zlb阅读 1,872评论 0 1
  • 常用语句: sql/plus sqlplus 'amdocs/Amdocs.Jx.China.110#@ysdb1...
    好好学习的蜗牛阅读 8,477评论 0 0
  • 50个常用的sql语句Student(S#,Sname,Sage,Ssex) 学生表Course(C#,Cname...
    哈哈海阅读 4,999评论 0 7
  • 男方家想让我家拿出钱,我家没有人管我。 很纠结,要不要我死了算了。
    丁壮壮阅读 2,865评论 8 2
  • 想不到知道简书这个爱PP是思维导图联的姻,而今天却是第一次接触思维导图这门课程。上面是苏老师发的思维导图案例,参考...
    疯几阅读 929评论 2 1