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


[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之间,可见用均速分页法,在速度和稳定性上都是不错的。

当然,对于数据库小的情况下,这样的优势可能并不明显,或者可能用ADO分页来的更快,但是如果在两万条数据的分页中,均速分页法的平均速度是普通ADO分页法的一半。

当然,均速分页法也有自己的不足,比如程序复杂度比传统分页来的高,在数据库少的时候性能不如ADO。


五、最后一点说明:
本文主要介绍的是均速分页法的一个原理,我花了一个晚上用程序进行了实践,是可行的。但我主要是把str生成HTML后读取,与本文介绍的数据库保存str有点不同,不过原理是一样的。

如果您有条件使用SQL数据库,那么我建议您还是使用存储过程来实现分页的提速。

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

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