在ASP中使用均速分页法提高分页速度的方法(2)


    大家肯定会想到,数据不可能总是整除19(20个数据应该是mod 19)呀,当然,我们要处理一下零头,这些零头应该是最新的数据(我们是按addtime)排列的。我们再动态的建立一个表,[aritcle_1]
    [article_1]  id int IDENTITY (1, 1) NOT NULL, artid int, classid int default 0, title varchar(100), addtime datetime
    把多出来的零头数据加入这个表中。
    2、数据的显示
    定义pagecount是[page_1]的记录数
    我们分两种情况来
    (1)如果article_1没有记录(没有零头数据)
     第一页是84,83
     第二页是82,81
     第三页是80,79
     ……
     第N页是 : pagecount-(2*N-2), pagecount-(2*N-2)-1  
    (2)如果article_1有记录(有零头数据)
     第一页,调用article_1的数据,84
     第二页,83,82
     ……
     第N页是 : pagecount-(2*N-3), pagecount-(2*N-3)-1 
     说明一下:其中84,83等等这些数字,就是在page_1中,你对应的str编号XXX
     说到这里可能大家就比较明白了,均速分页法的原理实际是原来把页面分好,在分页的时候直接用页面进行拼接。这比每次分页的时候从数据库里直接调用数据再进行分页要来得省资源。
     同时,还可以说明一点的是,你完全可以不建立page_1表,而把这些str保存为HTML,然后在分页的时候读取出HTML页面进行拼接。
     3、数据的添加
     在传统的HTML分页中,添加新数据后,要把所有的HTML分页重新生成一次,在均速分页法中,就无需这样。我们前面已经设定了每个小页面只显示20条记录,那么article_1表中,也只保存最多19条记录。我们新添加一条记录,那么同时把这条记录加入到article_1中,如果article_1中的数据已经超19,那么就把这里面的数据生成一个str,加上编号后保存在[page_1]里,当然,如果你是用生成HTML的,你可以直接生成一个HTML。如果article_1中的数据已经没有超19,那么就不用管它了。
四、均速分页法和传统分页的比较
     我用了两千条数据的一个数据库进行测试,在XP系统下,P3 1G,256M内存的硬件条件下,用均速分页法平均速度在50MS,正负不超过10MS,用普通ADO分页,速度在85MS,正负在20-35MS之间,可见用均速分页法,在速度和稳定性上都是不错的。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/3106.html