关于数据量比较大的分页程序

基于db2的分页程序,主要注意使用主键、合理的利用fetch语句及where语句注意使用索引,可以有效降低系统负载,如果每页分页数据取的量不是很大,效果还是比较理想的。

 

 

 select * from PSASPOOT0101 where (CONSIGNDATE,ODFICODE,PAYTXSNO )  in

 (

select CONSIGNDATE,ODFICODE,PAYTXSNO

from (  

     select *

     from (

select ROW_NUMBER() over() as rn ,CONSIGNDATE,ODFICODE,PAYTXSNO

from PSASPOOT0101

fetch first 2000000 rows  only

     ) aa

    where rn > 5 and rn < 30

        ) bb

with ur

 

 

CONSIGNDATE,ODFICODE,PAYTXSNO这三个字段是联合主键

 

-----------------------------------------------------------------------

对于oracle有个不成熟的想法:估计单机上是可行的。

 

select * 

from PMCSSAST0101 

where rowid in( 

      select ccc

      from (

      select rownum as aa, rowid as ccc

            from pmcs.PMCSSAST0101 

      where rownum < 200

      ) bb where aa > 30

)

-----------------------------------------------------------------------

估计官方标准的写法:

 

select *

      from (

     select /*+ first_rows(200) */ rownum as aa, a.* 

           from pmcs.PMCSSAST0101 a

     where rownum < 200

      ) bb where aa > 30

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值