解决Oracle分页查询中排序与效率问题
2009-03-05 13:11:08 来源:WEB开发网最初我使用如下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代码查询:
SELECT *
FROM(
SELECT ROWNUM RN,TA.*
FROM(
select 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
)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.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
)TA WHERE ROWNUM <= 20
)WHERE RN > 10
- ››解决Zimbra邮件服务器证书过期办法
- ››解决ios的UITableView内容无法刷新的方法
- ››oracle 中 UPDATE nowait 的使用方法
- ››解决dedeCMS后台验证码不显示
- ››Oracle ORA-12560解决方法
- ››Oracle 10g RAC 常用维护命令
- ››解决“您尝试打开的文件*.xls的格式与文件扩展名指...
- ››解决Word2010中加入打印全屏预览按钮
- ››Oracle如何在ASM中定位文件的分布
- ››解决win7右下角音量控制图标、电池图标消失的脚本...
- ››解决MYSQL导入脚本数据中文乱码
- ››解决linux下SVN迁移时忘记了用户名和密码的办法
更多精彩
赞助商链接