Oracle分页查询中排序与效率问题 | 郑州计算机学校_郑州电脑学校_郑州电脑培训

19

02-2014

  原始未分页查询Sql代码如下:select ROWNUM rn, t.id ID, o.name YYB,u.name XM, t.MC from tZDYSXt,tuser u,lborganization o where t.cjr=u.id and u.orgid=o.orgcode and t.gx = 1order 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.MCfrom tZDYSX t,tuser u,lborganization owhere 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代码查询: