求解决方案:在数据库数据量很大时(如几百上千万条record),如何查找数据,以及分页显示在页面中。 如题,这应该是比较常遇到的情况,希望大家讨论下有哪些解决方案,有简单的代码就最好了. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 请问数据库分页是什么意思?和web里的分页应该不同吧? 就是在数据库里就把满足条件的记录的某些行查询出来,不同的数据库sql写法是不一样的,oracle用rownum来分页,sqlserve用top.现在的一些orm如hibernate就可以帮你搞定这些,具体的实现细节不用你去做 Johnson_Hong,你说的在数据库里把满足条件的记录查询出来,是指用存储过程来实现吗?因为每次查询的条件可能不一样的。还没用过hibernate啊.呵呵. hibernate支持从结果集中再分页,比如你的SQL执行后是10W条,你可以只取其中的10-20条 几百w条的数据,用户即使看个十七八页也看不了多少条记录,性能上讲最好只查许最少量的。我的一个经验:1, 缓存所有数据的KEY(主键)在内存中。2, 并且aop拦截DAO中插入数据的方法,使得每插入一条数据,该记录的key也会加入缓存。3, 用户访问数据时,根据缓存里的key,很容易得到回总共有多少条记录。4, 根据用户申请第几页,以及一页的size,再调用相应的dao方法返回记录集合。这个dao方法形如List GetObjects(List keys);系统初始化时,LOAD所有数据的KEY可能会花点时间。 select * from (select t1.*,rownum rn from (select tabcol from tables) t1 where rownum<=($end$))t2 where t2.rn>=$start$分页SQL 首先需要优化SQL的执行效率,这个里面学问就多了,比如建索引啦,使用试图拉,适当对搜索条件进行排序拉。。然后使用分页技术来取数据,各种数据库基本都支持的,虽然有好有坏(比如SQL Server2000的烂分页),但总比不分好 一个小问题 我自己写了个快速排序法,但是没排成功,大家帮忙看看哪里错了? 各位大侠,帮小弟看看吧,flex+spring+ibatis集成报错 dwr的一个小问题 请哪位好心人帮我看看这个验证码的问题,我急死了 关于Struts2的FilterDispatcher,太变态了 明天去买书,请过来人推荐两本 commons logging报错,请高手进来看看! struts在tomcat下正常,放到weblogic就不行了,怎么回事? 怎么在JBoss里配置CMP的数据源? 基于s1sh项目的drp在显示dtree动态树出现问题 hibernate.properties not found问题
现在的一些orm如hibernate就可以帮你搞定这些,具体的实现细节不用你去做
我的一个经验:
1, 缓存所有数据的KEY(主键)在内存中。
2, 并且aop拦截DAO中插入数据的方法,使得每插入一条数据,该记录的key也会加入缓存。
3, 用户访问数据时,根据缓存里的key,很容易得到回总共有多少条记录。
4, 根据用户申请第几页,以及一页的size,再调用相应的dao方法返回记录集合。
这个dao方法形如List GetObjects(List keys);系统初始化时,LOAD所有数据的KEY可能会花点时间。
select * from (select t1.*,rownum rn from (select tabcol from tables) t1 where rownum<=($end$))t2
where t2.rn>=$start$分页SQL
然后使用分页技术来取数据,各种数据库基本都支持的,虽然有好有坏(比如SQL Server2000的烂分页),但总比不分好