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

基于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

猜你喜欢

转载自eliotlb.iteye.com/blog/1432141
今日推荐