资源描述:
《解决oracle分页查询中排序与效率问题》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、解决Oracle分页查询中排序与效率问题 原始未分页查询Sql代码如下: select ROWNUM rn, t.id ID, o.name YYB,u.name XM, t.MC from tZDYSX t,tuser u,lborganization o where t.cjr=u.id and u.orgid=o.orgcode and t.gx = 1 order by ID 结果如下:RN ID YYB XM MC------------------------------------
2、-------------3 49 某证券总部 管理员测试4 96 某证券总部 管理员持有上港10000股以上5 102某证券总部 管理员十年规划14 105某证券总部 管理员开发渠道为上海11 106某证券总部 管理员万科A12 107某证券总部 管理员1113 108某证券总部 管理员今天过生日的客户2 109某证券总部 管理员客户状态正常6 110某证券总部 管理员无交易7 111某证券总部 管理员OA8 112某证券总部 管理员幸运客户9
3、 113某证券总部 管理员风险型10 114某证券总部 管理员tst22 115白沙网上交易 安昌彪安客户正常1 118某证券总部 管理员21318 119某证券总部 管理员客户号包含100817 120某证券总部 管理员aaa19 123某证券总部 管理员ssssssss20 124某证券总部 管理员www21 126某证券总部 管理员12312315 127某证券总部 管理员121216 128某证券总部 管理员aaaaaa22rowsselected
4、最初我使用如下Sql代码查询: select * from (select ROWNUM rn, t.id ID, o.name YYB,u.name XM, t.MC from tZDYSX t,tuser u,lborganization o where t.cjr=u.id and u.orgid=o.orgcode and t.gx = 1 order by t.ID )Where rn>10 and rn<=20; 这种方法能成功分页,结果如下:RN ID YYB XM M
5、C----------------------------------------------14 105某证券总部 管理员开发渠道为上海11 106某证券总部 管理员万科A12 107某证券总部 管理员1113 108某证券总部 管理员今天过生日的客户18 119某证券总部 管理员客户号包含100817 120某证券总部 管理员aaa19 123某证券总部 管理员ssssssss20 124某证券总部 管理员www15 127某证券总部 管理员121216 128
6、某证券总部 管理员aaaaaa10rowsselected 从结果看来,有个问题:此语句Sql代码 orderbyCJSJDESC 被执行,但是是在分后的第11到20条记录的结果集中再进行排序,而不是先排序后分页。(本来希望显示ID为112到126,结果变为105到128) 后来变为以下Sql代码查询: SELECT * FROM( SELECT ROWNUM RN,TA.* FROM( select t.id ID, o.name YYB,u.name XM, t.MC from tZDYSX t,
7、tuser u,lborganization o where t.cjr=u.id and u.orgid=o.orgcode and t.gx = 1 order by t.ID )TA WHERE ROWNUM <= 20 )WHERE RN > 10 SELECT * FROM( SELECT ROWNUM RN,TA.* FROM(select t.id ID, o.name YYB,u.name XM, t.MCfrom tZDYSX t,tuser u,lborganization o where t.cjr=
8、u.id and u.orgid=o.orgcode and t.gx = 1 order by t.ID)TA WHERE ROWNUM <= 20)WHERE RN > 10结果如下:RN