|
锁定老贴子 主题:数据分页显示的一种方法
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
最后更新时间:2004-11-12
在oracle数据库中可以使用rownum进行分页显示,是通过把数据放到临时表里然后再根据显示页数取出的,据公司的dba分析,每次操作会对整个表进行扫描,这样的话我觉得在效率和性能上是个问题,我想用以下方式来解决这个问题,先把想法写一下,大家给点意见
做第一次查询时,首先获得所有满足条件的纪录的id集合,然后将这个集合和要显示的纪录返回给客户端;客户端缓存这个id集合,如果要查某一页的数据,我在客户端取出符合要求的id,然后再从数据库中查询相应纪录;客户端有一个条件判断函数,如果两次提交的查询条件不同则不使用客户端缓存,如果相同就使用客户端缓存。 不知道这个想法可不可行,希望大家多多指教 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
最后更新时间:2004-11-12
select * from ( select row_.*, rownum rownum_ from (...... ) row_ where rownum <= ?) where rownum_ > ? 这种用嵌套3层的分页sql是处理效率最高的办法,你找不到更高效的方法了。 |
|
| 返回顶楼 | |
|
最后更新时间:2004-11-12
看看Hibernate的分页代码就是这样的,现在使用Toplink比较多,可是没有分页的支持,好不爽。
|
|
| 返回顶楼 | |
|
最后更新时间:2004-11-12
robbin 写道 select * from ( select row_.*, rownum rownum_ from (...... ) row_ where rownum <= ?) where rownum_ > ? 这种用嵌套3层的分页sql是处理效率最高的办法,你找不到更高效的方法了。 我现在项目里就是这么做的,这种三层嵌套的语句执行的时候,最里层的语句是会每次都执行吗? 我的想法不能提高效率吗?能否给出原因 |
|
| 返回顶楼 | |
|
最后更新时间:2004-11-12
简单阿,你自己换成别的你认为高效的办法,然后拿来测试测试,看看哪种方法效率高不就知道了吗?我在2000的时候就研究Oracle的分页问题了,研究了半年多,换了好多种办法,最后确定还是这种办法最高效。
|
|
| 返回顶楼 | |
|
最后更新时间:2004-11-12
我在使用toplink分页时由于没有现成的API,所以只能抄了hibernate的这段sql(就是robbin写的那段),看来robbin和gaven king 英雄所见略同啊,呵呵。
|
|
| 返回顶楼 | |
|
最后更新时间:2004-11-12
如果需要排序这样一来还行吗?我简单的试了试好象有问题
|
|
| 返回顶楼 | |
|
最后更新时间:2004-11-12
是楼主觉得性能会有问题还是你们的DBA如此觉得呢?我个人认为这是基于Oracle最好的SQL分页方式了,如果DBA如此了解,问问他咯.
|
|
| 返回顶楼 | |
|
最后更新时间:2004-11-12
lxrjszl 写道 如果需要排序这样一来还行吗?我简单的试了试好象有问题
好像有什么问题?说说看,别简单试,要认真的试。 |
|
| 返回顶楼 | |
|
最后更新时间:2004-11-14
robbin 写道 select * from ( select row_.*, rownum rownum_ from (...... ) row_ where rownum <= ?) where rownum_ > ? 这种用嵌套3层的分页sql是处理效率最高的办法,你找不到更高效的方法了。 这样的分页方法能应付带有查询条件的分页吗? 个人印象里凡是用rownum来分页都不能应付带有查询条件的分页 |
|
| 返回顶楼 | |











