PLSQL Developer查询分页是如何实现的

ccdjk 2008-03-22 01:30:41
正在做的一个程序涉及数据量比较大
有几千万的记录
不知道PLSQL Developer查询分页是如何实现的
问问大家
先谢谢大家
...全文
824 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
ccdjk 2008-04-14
  • 打赏
  • 举报
回复
顶顶
ccdjk 2008-04-07
  • 打赏
  • 举报
回复
顶顶
feng5799 2008-04-07
  • 打赏
  • 举报
回复
第二种方法是越到中间越慢的
ccdjk 2008-04-02
  • 打赏
  • 举报
回复
顶顶
kokobox 2008-04-01
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 iihero 的回复:]
如果是涉及几千万的记录,确实需要慎重考虑实现方案。
如果使用的是JDBC3.0,那么可以考虑使用scrolled result set,Oracle的ojdbc14.jar应该支持这种结果集,
它可以绝对定位。

另外一种实现方式是,使用rownum的方案:
其分页sql的形式如下:
select * from (select a.*, rownum r from (select * from t where x = :variable order by y ) a
where rownum < :HigerBound )
where r > :LowerBound
[/Quote]

我用的就是这个方法,只是我们的表只有几百万条记录,还可以

lz如果直接到几千万条的表分页的话,肯定慢,直接操作上千万的的大表不是很理智啊,还是先把表分区吧,建立索引,然后再用上面的方法分页。速度肯定会快。

ccdjk 2008-04-01
  • 打赏
  • 举报
回复
顶顶
ccdjk 2008-03-31
  • 打赏
  • 举报
回复
顶顶
iihero 2008-03-29
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 ccdjk 的回复:]
另外
第一个方法可不可以详细介绍一下
谢谢
[/Quote]

google 一下scrolled ResultSet一定有很多解决方案,记住要用ojdbc14.jar那个驱动,而不是classes12.jar/zip
ccdjk 2008-03-29
  • 打赏
  • 举报
回复
顶顶
rockywu 2008-03-27
  • 打赏
  • 举报
回复
值得学习..
wind__dance 2008-03-26
  • 打赏
  • 举报
回复
order by 会用上索引????
ccdjk 2008-03-24
  • 打赏
  • 举报
回复
顶顶
ccdjk 2008-03-22
  • 打赏
  • 举报
回复
另外
第一个方法可不可以详细介绍一下
谢谢
ccdjk 2008-03-22
  • 打赏
  • 举报
回复
回3楼
第二个方法我已经试过了
order by后面的是一个主键
比如我的表是tb_test
表中主键为fd_id
我插入了5000000条数据
select * from (select a.*, rownum r from (select * from tb_test order by fd_id ) a
where rownum <= 2000)
where r > 1990
耗时0.078秒

select * from (select a.*, rownum r from (select * from tb_test order by fd_id ) a
where rownum <= 2000000)
where r > 1999990
耗时11.203秒

select * from (select a.*, rownum r from (select * from tb_test order by fd_id ) a
where rownum <= 5000000)
where r > 4999990
耗时27.546秒
super_moon 2008-03-22
  • 打赏
  • 举报
回复
没人遇到过大的数据量,关注中
iihero 2008-03-22
  • 打赏
  • 举报
回复
你指的是哪个方法?我提供了两种方法你都试过了?
方法2里边,对order by后边的字段需要建索引。
方法2应该不会越来越慢的。
ccdjk 2008-03-22
  • 打赏
  • 举报
回复
楼上的方法试过了
这个方法越到后面
每翻一页
耗费时间会越长
PLSQL Developer的分页方式就比较高效
每翻一页的时间比较平均
谢谢楼上
大家还有好方法
iihero 2008-03-22
  • 打赏
  • 举报
回复
如果是涉及几千万的记录,确实需要慎重考虑实现方案。
如果使用的是JDBC3.0,那么可以考虑使用scrolled result set,Oracle的ojdbc14.jar应该支持这种结果集,
它可以绝对定位。

另外一种实现方式是,使用rownum的方案:
其分页sql的形式如下:
select * from (select a.*, rownum r from (select * from t where x = :variable order by y ) a
where rownum < :HigerBound )
where r > :LowerBound

3,492

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧