Oracle 的几种 分页查询

这是我从网上总结出来的,记下来避免忘记

第一种方法  速度会快点,在tab1这层先过滤掉了一部分数据,方法成本最低,只嵌套一层,速度最快,即使查询的数据量再大,也几乎不受影响,速度依然

--分页查询1
SELECT TAB2.*
   FROM ( SELECT tab1.*, ROWNUM as row_num
           FROM (
                   --把需要分页的sql直接放进来就行了
                   SELECT t.* FROM T_T_DEPT t
                
                 ) TAB1
           WHERE ROWNUM<20
         ) TAB2
WHERE TAB2.row_num >10

第二种方法  随着查询范围的扩大,速度也会越来越慢,因为排了序

--分页查询2
SELECT TAB2.*
   FROM ( SELECT tab1.*, ROWNUM as row_num
           FROM (
                   --把需要分页的sql直接放进来就行了
                   SELECT t.* FROM T_T_DEPT t
                  ORDER BY Name
              
) TAB1   
          WHERE ROWNUM<20
         ) TAB2
WHERE TAB2.row_num >10

第三种方法  到最外层再进行处理,不建议

--分页查询3
SELECT TAB2.*
   FROM ( SELECT tab1.*, ROWNUM as row_num
           FROM (
                   --把需要分页的sql直接放进来就行了
                   SELECT t.* FROM T_T_DEPT t
                
                 ) TAB1
         ) TAB2
                   --11与20之间

WHERE TAB2.row_num BETWEEN 11 AND 20

第四种方法  这种能排序,运行久了也不会变慢

SELECT * FROM(SELECT TAB2.*
   FROM ( SELECT tab1.*, row_number() over(order by 列名) as rownumber
           FROM (
                   --把需要分页的sql直接放进来就行了
                  你的sql语句
              
) TAB1
        ) TAB2
          WHERE TAB2.rownumber> 10)
WHERE rownum <= 20



  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值