锁定老帖子 主题:Oracle查询结果分页
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-10-21
分页查询是web开发中非常常用的功能,笔者主要使用Oracle数据库工作,所以只总结一下Oracle中的分页方法 通常是由下面语句就可以完成分页功能:
SELECT x.* from (SELECT z.*,rownum rn from XZQH z where rownum<=101) x where x.rn>=90
查询第90条到101条记录(包含边界);
小弟才疏学浅,目前就只会这一种分页方法,但是这种分页方式的缺点是显而易见的,如果数据量过大的话,(SELECT z.*,rownum rn from XZQH z where rownum<=101)这段代码查询的数据量就很大,如果查询条数很大(比如第89900-90000条)时,会先查出90000条数据来,然后再取后100条,这样势必导致效率低下,反应变慢.
我想,应该有更高效的方法,但是在网上搜索过却没有结果,如果有哪位朋友有更好的办法,请不吝赐教,谢谢. 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2011-11-02
网上查过;貌似这种方法的效率是最高的。
|
|
返回顶楼 | |
发表时间:2011-11-02
别把oracle想得太傻
|
|
返回顶楼 | |
发表时间:2011-11-02
oracle就是这个不方便,但这个又很常用。
|
|
返回顶楼 | |
发表时间:2011-11-09
SELECT *
from (SELECT z.*,rownum r from XZQH) where r > 1000 and r <=500; 我最近是这么用的,从xx条开始,每次取500条 |
|
返回顶楼 | |
发表时间:2011-11-09
抱歉,漏写了个r
应该是 SELECT r,* FROM (SELECT *,rownum r FROM XZQH) where r > 1000 and r <= 500; |
|
返回顶楼 | |
发表时间:2011-11-09
楼主的方法是最高效的,oracle会自动优化
|
|
返回顶楼 | |
发表时间:2011-11-10
SELECT x.*
from (SELECT z.*,rownum rn from XZQH z where rownum>=8990) x where x.rn<=9000 我不知道这样行不行 |
|
返回顶楼 | |
发表时间:2011-11-10
leavesforeye 写道 SELECT x.*
from (SELECT z.*,rownum rn from XZQH z where rownum>=8990) x where x.rn<=9000 我不知道这样行不行 这样不行,oracle不支持。 |
|
返回顶楼 | |
发表时间:2011-11-11
又学了一招,哈哈....
|
|
返回顶楼 | |