我们常规的数据处理流程是这样的:
客户对数据库操作(提出一次请求),在数据库端产生一个结果集,反馈给客户,在V层可以分页处理,(当然也可以分批次查询出该用户的请求)这是分页的机制。
现在有这样一个需求:
要求在客户端对数据库进行操作,在数据库端会产生一个结果集,不要求马上全部反馈给客户,而是放到数据库的某个区域,然后客户可以分批次取得这个结果集
比如:查询某信息,所得的结果是5w条记录,但是用户每次只看1k条,这样的话用户就可以分批次查看结果!
注意:不要分批次查询结果,要求一次查询除所有结果,这个结果集在数据库端随时准备被客户调用!
客户对数据库操作(提出一次请求),在数据库端产生一个结果集,反馈给客户,在V层可以分页处理,(当然也可以分批次查询出该用户的请求)这是分页的机制。
现在有这样一个需求:
要求在客户端对数据库进行操作,在数据库端会产生一个结果集,不要求马上全部反馈给客户,而是放到数据库的某个区域,然后客户可以分批次取得这个结果集
比如:查询某信息,所得的结果是5w条记录,但是用户每次只看1k条,这样的话用户就可以分批次查看结果!
注意:不要分批次查询结果,要求一次查询除所有结果,这个结果集在数据库端随时准备被客户调用!
现在的要求就是如果把结果集都放到ArrayList里面,如果内存不够用就不行了。如果分批次查询结果,那么速度会慢很多!不知道大家能不能明白我的意思!谢谢了
一般都提倡分次(页)查询,就是查询你要显示的部分
不提倡全部查出来在分页显示也许楼主觉得,如果1k个人要都要看10页的数据,
那么如果分页查寻就要调数据库1W次,如果全部查出来分开只要1K次
这样效率会好但是
如果数据有1K页
那么1k人,内存中就有1K*1K=1KK的数据,而只看了1W页的数据另外,要查看的数据永远比数据的总量小的多的多
-----------------
如果说查的多慢,就的从数据库优化,代码优化方面动手了,高级技术........
再SELECT 1001-2000条.
9楼:如果一个用户查看一页就关闭了浏览器,他所查看的信息就不存在了。
10楼:你说的是一个解决办法,是不是要写一个存储过程啊?11楼,
你说的没错,又什么好办法解决吗?
12楼:你说的方法占用大量内存,甚至内存越界异常!
13楼:你说的方法就是基本的分页方法,如果我的SQL很大,响应超级慢!关键是我不想占用太大的内存,又可以快速响应
(如果写个存储过程,相关的表是时时动态的,也是对系统造成不良的影响。不知道有什么更好的解决办法?)
大家帮忙想想
谢谢大家了!