Oracle分页查询中排序与效率问题

发表于:2010-6-07 10:18

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:51Testing软件测试网采编

#
Oracle
#
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
  ---------- ----------------- ----------------------
  3     49 某证券总部     管理员 测试
  4     96 某证券总部     管理员 持有上港10000股以上
  5    102 某证券总部     管理员 十年规划
  14   105 某证券总部     管理员 开发渠道为上海
  11   106 某证券总部     管理员 万科A
  12   107 某证券总部     管理员 11
  13   108 某证券总部     管理员 今天过生日的客户
  2    109 某证券总部     管理员 客户状态正常
  6    110 某证券总部     管理员 无交易
  7    111 某证券总部     管理员 OA
  8    112 某证券总部     管理员 幸运客户
  9    113 某证券总部     管理员 风险型
  10   114 某证券总部     管理员 tst
  22   115 白沙网上交易   安昌彪 安客户正常
  1    118 某证券总部     管理员 213
  18   119 某证券总部     管理员 客户号包含1008
  17   120 某证券总部     管理员 aaa
  19   123 某证券总部     管理员 ssssssss
  20   124 某证券总部     管理员 www
  21   126 某证券总部     管理员 123123
  15   127 某证券总部     管理员 1212
  16   128 某证券总部     管理员 aaaaaa

  22 rows selected

  最初我使用如下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      MC
  ---------- ----------------- -------------------
  14   105 某证券总部     管理员 开发渠道为上海
  11   106 某证券总部     管理员 万科A
  12   107 某证券总部     管理员 11
  13   108 某证券总部     管理员 今天过生日的客户
  18   119 某证券总部     管理员 客户号包含1008
  17   120 某证券总部     管理员 aaa
  19   123 某证券总部     管理员 ssssssss
  20   124 某证券总部     管理员 www
  15   127 某证券总部     管理员 1212
  16   128 某证券总部     管理员 aaaaaa

  10 rows selected

  从结果看来,有个问题:此语句Sql代码

  order by CJSJ DESC  被执行,但是是在分后的第11到20条记录的结果集中再进行排序,而不是先排序后分页。(本来希望显示ID为112到126,结果变为105到128)

  后来变为以下Sql代码查询:

21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号