oracle根据页码分页查询,关于oracle查询分页,使用row_number,查询90万条数据,页数越到后面,速度越慢,求解决方法?...

oracle 11g:

一共有大约90万的数据.

sql如下:

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

SELECT *

FROM (SELECT T.ID,

T.MSTID,

T.SHOUDFID,

T.SHOUDFMC,

T.SONGDFID,

T.SONGDFMC,

T.YSCP,

T.WLH,

T.WLMS,

T.CJH,

T.FDJH,

T.BZ,

T.SCSJ,

T.CCSJ,

T.BL1,

T.BL2,

T.BL3,

T.DQZT,

T.KWH,

T.RKSJ,

T.CJRID,

T.RKRID,

T.FHDH,

T.SFSC,

T.CPID,

T.DQUNITID,

T5.ID LSID,

T5.LSSJ,

T5.DARSJ,

T5.UNITID LSDWBM,

T5.UNITNAME LSDWMC,

T5.DARDWBM,

T5.DARDWMC,

T5.CJSJ LSCJSJ,

T5.CJDWBM,

T5.CJDWMC,

T5.DAKJSSJ,

T5.DJQ1JSSJ,

T5.DJQ2JSSJ,

T5.DDZT LSDQZT,

T4.XM,

T4.XB,

T4.SFZH,

T4.CSRQ,

T4.LXDH,

T4.YB,

T4.DZ,

T4.BL1 LXDZDH,

T2.UNITTYPE,

T2.UJC,

T.SJC,

T.CJSJ,

ROW_NUMBER() OVER(ORDER BY T.DQUNITID, T.ID) RN

FROM T_D_ZTRK_SLV T

LEFT JOIN T_B_UNIT T2 ON T.DQUNITID = T2.UNITID

LEFT JOIN T_D_RETAIL_CLXX_EXP T3 ON T.ID = T3.RKID

LEFT JOIN T_D_RETAIL T5 ON (T3.DDID = T5.ID AND T5.DDZT <> 2)

LEFT JOIN T_D_RETAIL_YHXX_EXP T4 ON (T4.DDID = T5.ID AND

T5.DDZT <> 2)

WHERE ((T.DQZT IN (2, 3, 4, 5, 6, 8) OR

(T.DQZT = 1 AND KWH IN ('00002'))) OR

(T.DQZT IN (2, 3, 4, 5, 6, 8, 7) AND

(T.SCSJ >= '19900101' AND T.SCSJ <= '20151224'))))

WHERE RN >= 1

AND RN < 5001

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

通过plsql执行

发现1-5001时用时7秒

5000001-505001时用时30秒

8000001-805001时用时93秒

row_number分页 是越到后面越慢吗?有没有什么好的分页解决方法。最好举例说明

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值