正在做的一个程序涉及数据量比较大
有几千万的记录
不知道PLSQL Developer查询分页是如何实现的
问问大家
先谢谢大家

解决方案 »

  1.   

    如果是涉及几千万的记录,确实需要慎重考虑实现方案。
    如果使用的是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
      

  2.   

    楼上的方法试过了
    这个方法越到后面
    每翻一页
    耗费时间会越长
    PLSQL Developer的分页方式就比较高效
    每翻一页的时间比较平均
    谢谢楼上
    大家还有好方法 
      

  3.   

    你指的是哪个方法?我提供了两种方法你都试过了?
    方法2里边,对order by后边的字段需要建索引。
    方法2应该不会越来越慢的。
      

  4.   

    回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秒
      

  5.   

    order by 会用上索引????
      

  6.   


    google 一下scrolled ResultSet一定有很多解决方案,记住要用ojdbc14.jar那个驱动,而不是classes12.jar/zip