http://www.jdon.com:81/jive/thread.jsp?forum=16&thread=1174

解决方案 »

  1.   

    你不需要查出所有数据。比如第一页,你只需查出20条(假如你想每页20条),第二页,你就查出40条,查出多少条你可以用sql语句控制。查出时你将这些数据按某种顺序排列。这样,你在每次去数据时,取后20条。不过,还有好多好的方法,你用关键字 分页 搜索一下就能看到。
      

  2.   

    我现在用的分页,每次当我翻动页面的时候就需要把查询重新操作一次,要知道使用分页的查询一般都有点大,这对效率不好,所以怎么样才能使分页查询更有效率呢?????
    我想到一个办法,就是一来只执行一次查询把结果集放在COOKIE或SESSION里,然后以后都从里面拿出结果就可以,了大家觉得怎么样????????????????????????????
    -------------------------------------------------------引用!
    你的想法有一个很大的漏洞,如果你只调用cookie或session中的数据。那么
    如果是论坛你在翻页的过程中就看不到别人新发的信息的了。换句话说你这样看到的内容是你第一次访问这个页面的到的数据库内容。
      

  3.   

    用标准的SQL语句实现查询记录分页 
    zzpapple 原创 (参与分:1876,专家分:7)   发表:Sep 5, 2002 1:43 PM   更新:Sep 9, 2002 11:50 AM   版本:1.0   阅读:307次 
     在绝大多数的应用中,返回大量的符合条件的记录是司空见惯的,最典型的莫过于搜索了。在搜索的应用中,用户给出搜索条件,服务器查出符合条件的记录。但往往搜索会返回大量的数据记录,如果在网页中,往往是通过分页的方式来实现,页面提供诸如上一页,下一页等等按钮来实现分页。
    现在主要有以下几中方式来实现分页:
    1.EJB的Find方法
    2.在显示第一页前将所有的记录放在collection对象中,后续的各页都在内存中取。
    3.每一页都到数据库作一次重复的查询,然后将符合条件的记录显示出来。
    4.保存前几页的搜索结果在内存中(经常使用到的),后续的记录(这些数据是多数用户都没有耐心看的)再通过连数据库取得。
    5.其他各种cache机制。我们可以根据实际情况来选择适合自己的方法,我给大家介绍一个通过标准的SQL语句来得到符合条件的数据。如从第10到20条的符合条件(where语句中的)的记录。通过这种方法取得记录有一个必要条件,必须有一个能够标识记录顺序的字段,如id,time等等。下面我为大家演示一个例子:
    查询t_table表中所有记录第10到20条,按id排序。
    SQL语句为:
    SELECT * FROM t_table t1 WHERE (SELECT count(*) FROM t_table t2 WHERE t2.id < t1.id ) >= 10 AND (SELECT count(*) FROM t_table t2 WHERE t2.id < t1.id ) < 20又如查询t_table表中key='123'第10到20条的记录,按id排序。
    SELECT * FROM t_table t1 WHERE (SELECT count(*) FROM t_table t2 WHERE t2.id < t1.id AND t2.key = '123') >= 10 AND (SELECT count(*) FROM t_table t2 WHERE t2.id < t1.id AND t2.key = '123') < 20 AND t1.key = '123'当然条件中的id可以换为任何能表识记录顺序的字段