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