我们常规的数据处理流程是这样的:
客户对数据库操作(提出一次请求),在数据库端产生一个结果集,反馈给客户,在V层可以分页处理,(当然也可以分批次查询出该用户的请求)这是分页的机制。
现在有这样一个需求:
要求在客户端对数据库进行操作,在数据库端会产生一个结果集,要求马上全部反馈给客户,而是放到数据库的某个区域,然后客户可以分批次取得这个结果集
比如:查询某信息,所得的结果是5w条记录,但是用户每次只看1k条,这样的话用户就可以分批次查看结果!
注意:不要分批次查询结果,要求一次查询除所有结果,这个结果集在数据库端随时准备被客户调用!

解决方案 »

  1.   

    http://dev2dev.bea.com.cn/techdoc/200410222.html
      

  2.   

    把记录集全部读取 放在ArrayList里面每次取1K也就是循环1K次
      

  3.   

    还是分页了,查询的时候给数据库传入一个页码n,然后以ROWNUM<(n+1)*rowsPerPage得到前n+1页的资料,然后与前ROWNUM<(n+1)*rowsPerPage得到的前n页做MINUS就可以得到,但是好像要在其中的一个查询栏位上有索引资料才准确。我也遇到过这个问题,资料全部读出后再分页因为资料量太大,加载一个页面有时要几分钟。
      

  4.   

    分页的机制我做过,
    现在的要求就是如果把结果集都放到ArrayList里面,如果内存不够用就不行了。如果分批次查询结果,那么速度会慢很多!不知道大家能不能明白我的意思!谢谢了
      

  5.   

    要是我只看了一条就关了浏览器,你怎么办?清不清空?何时清空?怎么清空?Session侦听吗?假如有十个客户呢?你的内存能有多大?
      

  6.   

    我感觉
    一般都提倡分次(页)查询,就是查询你要显示的部分
    不提倡全部查出来在分页显示也许楼主觉得,如果1k个人要都要看10页的数据,
    那么如果分页查寻就要调数据库1W次,如果全部查出来分开只要1K次
    这样效率会好但是
    如果数据有1K页
    那么1k人,内存中就有1K*1K=1KK的数据,而只看了1W页的数据另外,要查看的数据永远比数据的总量小的多的多
    -----------------
    如果说查的多慢,就的从数据库优化,代码优化方面动手了,高级技术........
      

  7.   

    在Servlet里产生结果集,将结果集转化成ArrayList,用Session传到页面里去,在页面中设置变量用于控制读取的位置,根据用户的选择页面显示。
      

  8.   

    你可以SELECT 一千条.
    再SELECT 1001-2000条.
      

  9.   

    我是LZ
    9楼:如果一个用户查看一页就关闭了浏览器,他所查看的信息就不存在了。
    10楼:你说的是一个解决办法,是不是要写一个存储过程啊?11楼,
    你说的没错,又什么好办法解决吗?
    12楼:你说的方法占用大量内存,甚至内存越界异常!
    13楼:你说的方法就是基本的分页方法,如果我的SQL很大,响应超级慢!关键是我不想占用太大的内存,又可以快速响应
    (如果写个存储过程,相关的表是时时动态的,也是对系统造成不良的影响。不知道有什么更好的解决办法?)
    大家帮忙想想
    谢谢大家了!
      

  10.   

    需要看n到n+100条,就取这一百条,不要多取,不要使用内存存储,那是不理想的解决方案看一下ibatis的分页方法,那个PaginationList早早被废弃了,可以使用sql语句来做,很成功,因为我已经做完了,现在支持oracle和sqlserver
      

  11.   

    呵呵,在jive中是这样解决的,先将所有的数据id取出,放到一个List中,然后根据id去取数据,不知道理解搂主的意思没有。
      

  12.   

    http://sourceforge.net/projects/xapps/               发现一个好的平台,推荐给大家,包括内容很多,比如:工作流,动态表单,....好强大   ,是JAVA编写的,是一个中国的开源工程.