如题,这应该是比较常遇到的情况,希望大家讨论下有哪些解决方案,有简单的代码就最好了.

解决方案 »

  1.   

    请问数据库分页是什么意思?和web里的分页应该不同吧?
      

  2.   

    就是在数据库里就把满足条件的记录的某些行查询出来,不同的数据库sql写法是不一样的,oracle用rownum来分页,sqlserve用top.
    现在的一些orm如hibernate就可以帮你搞定这些,具体的实现细节不用你去做
      

  3.   

    Johnson_Hong,你说的在数据库里把满足条件的记录查询出来,是指用存储过程来实现吗?因为每次查询的条件可能不一样的。还没用过hibernate啊.呵呵.
      

  4.   

    hibernate支持从结果集中再分页,比如你的SQL执行后是10W条,你可以只取其中的10-20条
      

  5.   

    几百w条的数据,用户即使看个十七八页也看不了多少条记录,性能上讲最好只查许最少量的。
    我的一个经验:
    1, 缓存所有数据的KEY(主键)在内存中。
    2, 并且aop拦截DAO中插入数据的方法,使得每插入一条数据,该记录的key也会加入缓存。
    3, 用户访问数据时,根据缓存里的key,很容易得到回总共有多少条记录。
    4, 根据用户申请第几页,以及一页的size,再调用相应的dao方法返回记录集合。
    这个dao方法形如List GetObjects(List keys);系统初始化时,LOAD所有数据的KEY可能会花点时间。
      

  6.   


    select * from  (select t1.*,rownum rn from (select tabcol from tables) t1 where rownum<=($end$))t2 
    where t2.rn>=$start$分页SQL
      

  7.   

    首先需要优化SQL的执行效率,这个里面学问就多了,比如建索引啦,使用试图拉,适当对搜索条件进行排序拉。。
    然后使用分页技术来取数据,各种数据库基本都支持的,虽然有好有坏(比如SQL Server2000的烂分页),但总比不分好