业务上经常需要无条件的查询明细数据并显示到客户端。 显示在界面上数据量在几十万条偶尔上百万条吧。
这种情况怎么处理呢?
分页是个办法,但是大家具体怎么实现呢。分页显示的数据会不会有问题?请大家指点,最好说明具体的数据处理原理。

解决方案 »

  1.   

    传入2个参数,开始行数和结束行数,如要查询1-10行
    select *
      from (select t.*, rownum rn from tb order by 时间 desc)
     where rn between 1 and 10
      

  2.   

    select *
      from (select t.*, rownum rn from tab t )
     where rn between (2-1)*10+1 and 2*10
    刚刚的回复有点问题
    红色的为页数,兰色的为每页显示条数
      

  3.   

      PL\SQL 你用什么查询看的?
    报表还是什么出的数据啊 ···
      

  4.   

    虽然每次都是显示一页,但是两次搜索理论上没什么关系。因为数据的排序并不一样。
    pl/sql develop里的效果还不错,但是不知道怎么实现的。 
    第一次显示一页,点击继续不断的显示更多数据,点击停止就停止。然后再继续就继续。在出现第一页以后更新的数据不会在你重新查询之前显示出来。给我感觉它显示的数据就是你第一次显示一页那个时间点的数据。 我猜测是通过临时表什么的来实现,但不确定。
      

  5.   

    select * from (select rownum as rn,tt.* from tablename  tt) b where b.rn>=(pageSize*(pageIndex-1)+1) and b.rn<=(pageSize*pageIndex)
      

  6.   

    分页可以解决一定的问题,但是也需要一个SELECT COUNT(*)来计算总页数.
    另外,2楼3楼的分页代码有问题.这样分页应该才对.(每页显示10条数据,取第一页的情况)
    select *
      from (select t.*, rownum rn from tb order by 时间 desc rownum <= 10)
     where rn >= 1
      

  7.   

    期待更好的答案,最好能解析一下pl/sqldevelop的机制
      

  8.   

    随便网上搜下分页很多啊
    和pl/sqldevelop啥关系
    定好每页的显示行数   然后统计要显示的总行数  动态计算出总共页数
    参考9楼
    当点击页面跳转时  传2值给数据库  即起,始行数
    楼上有例子  如果要按某列排序   可能会需要包3层select
      

  9.   

    一次连接生产个txt到本地去
    然后分页查询查询txt
     再次连接时 才更新txt
      

  10.   

    感谢大家的回复, 从效率上看,临时表会好于txt。