在ASP中使用均速分页法提高分页速度
作者:爱中华爱美丽 | 来源:互联网 | 2022-08-20 10:35
在ASP中使用均速分页法提高分页速度
一、适用范围 均速分页法主要适用于文章系统,新闻系统等排序方法固定的ASP+ACCESS应用 二、特点说明 很多用过一些文章系统或是新闻系统的朋友知道,一般的文章系统或是新闻系统,在分类分页时,通常是通过读取数据库中满足条件的排序后数据,然后根据请求页号,通过定位操作,指向某条数据,并且开始读取这条数据后面的若干条数据作为一页。这种分页方法,原理简单,但是存在的问题是每次都需要把数据库中满足条件的排序后数据都读取出来,如果有两千条数据,这个还好,如果有两万条呢?显示,这会占用大量的内存,浪费很多服务器资源。当然,如果有条件的,可以用SQL数据库,这样就好办多了,用一点存储过程就全部解决了。不过可能很多朋友还是在用ACCESS数据库,这样就没有办法了。当然,还有一些程序是把分页生成HTML,就像不少下载站点一样,大家有没有想过,这样会出现什么问题?如果我在后台一次添加一条记录,那么我得把这个分类中所有的分页都重新生成一次HTML,这是肯定的,想想吧,这样效率是不是很差。 均速分页法就是为了解决在ACCESS数据库中,大量数据的分页而想出来的。它兼有HTML分页和传统ADO分页的优点。一是速度快,占用资源少,不管你是第一页还是第一百页,程序速度都是相同的。而且在数据添加时,不必把所有分页都重新生成。下面我把原理介绍一下 三、分页原理 数据库中有一个article表,一个class表,我们不考虑是不是无限级分类还是两级分类,这个与我们无关。 [article] id int IDENTITY (1, 1) NOT NULL, classid int default 0, title varchar(100), addtime datetime [class] id int IDENTITY (1, 1) NOT NULL, classname varchar(20) 1、生成分页 如果class表中有一行数据是id为1,classname为“ASP分类”,我们先把所有article中所有classid=1的数据都取出来,(www.knowsky.com)然后按addtime升序排列,这个与普通的ADO分面是一样的,但是,下面我们要进行一些处理。 我们动态的在数据库里生成一个表,名字叫[page_1],1就是对应的classname为“ASP分类”的ID自动编号。 [page_1] pagenum int, pagestr text 我们先每20条数据生成一个str,每个str实际就是显示时这20条数据库的列表,然后为这个str编个号XXX,如果是0-19条记录,那么XXX就是001,如果是20-39,XXX就是002,以此类推。把str和它的编号加入page_1中。我们这里假设最大的是84 大家肯定会想到,数据不可能总是整除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之间,可见用均速分页法,在速度和稳定性上都是不错的。 当然,对于数据库小的情况下,这样的优势可能并不明显,或者可能用ADO分页来的更快,但是如果在两万条数据的分页中,均速分页法的平均速度是普通ADO分页法的一半。 当然,均速分页法也有自己的不足,比如程序复杂度比传统分页来的高,在数据库少的时候性能不如ADO。 五、最后一点说明: 本文主要介绍的是均速分页法的一个原理,我花了一个晚上用程序进行了实践,是可行的。但我主要是把str生成HTML后读取,与本文介绍的数据库保存str有点不同,不过原理是一样的。 如果您有条件使用SQL数据库,那么我建议您还是使用存储过程来实现分页的提速。
推荐阅读
1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ...
[详细]
蜡笔小新 2024-12-27 19:32:17
本文探讨了在Windows 10(64位)环境下开发的Windows服务,旨在定期向本地MS SQL Server (v.11)插入记录。尽管服务已成功安装并运行,但记录并未正确插入。我们将详细分析可能的原因及解决方案。 ...
[详细]
蜡笔小新 2024-12-28 10:30:14
nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ...
[详细]
蜡笔小新 2024-12-28 13:00:24
本周信息安全小组主要进行了CTF竞赛相关技能的学习,包括HTML和CSS的基础知识、逆向工程的初步探索以及整数溢出漏洞的学习。此外,还掌握了Linux命令行操作及互联网工作原理的基本概念。 ...
[详细]
蜡笔小新 2024-12-28 05:52:22
本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ...
[详细]
蜡笔小新 2024-12-27 19:05:41
本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ...
[详细]
蜡笔小新 2024-12-27 18:20:43
本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ...
[详细]
蜡笔小新 2024-12-27 17:40:42
本文详细介绍了HTML中标签的使用方法和作用。通过具体示例,解释了如何利用标签为网页中的缩写和简称提供完整解释,并探讨了其在提高可读性和搜索引擎优化方面的优势。 ...
[详细]
蜡笔小新 2024-12-27 17:05:37
本文深入探讨 MyBatis 中动态 SQL 的使用方法,包括 if/where、trim 自定义字符串截取规则、choose 分支选择、封装查询和修改条件的 where/set 标签、批量处理的 foreach 标签以及内置参数和 bind 的用法。 ...
[详细]
蜡笔小新 2024-12-27 16:20:10
QUIC(Quick UDP Internet Connections)是谷歌开发的一种旨在提高网络性能和安全性的传输层协议。它基于UDP,并结合了TLS级别的安全性,提供了更高效、更可靠的互联网通信方式。 ...
[详细]
蜡笔小新 2024-12-28 12:33:18
本文介绍如何在 Android 中通过代码模拟用户的点击和滑动操作,包括参数说明、事件生成及处理逻辑。详细解析了视图(View)对象、坐标偏移量以及不同类型的滑动方式。 ...
[详细]
蜡笔小新 2024-12-28 12:12:22
本文介绍了OAuth认证协议的核心概念及其工作原理。OAuth是一种开放标准,旨在为第三方应用提供安全的用户资源访问授权,同时确保用户的账户信息(如用户名和密码)不会暴露给第三方。 ...
[详细]
蜡笔小新 2024-12-28 12:07:46
2023 ARM嵌入式系统全国技术巡讲旨在分享ARM公司在半导体知识产权(IP)领域的最新进展。作为全球领先的IP提供商,ARM在嵌入式处理器市场占据主导地位,其产品广泛应用于90%以上的嵌入式设备中。此次巡讲将邀请来自ARM、飞思卡尔以及华清远见教育集团的行业专家,共同探讨当前嵌入式系统的前沿技术和应用。 ...
[详细]
蜡笔小新 2024-12-28 11:58:48
一位程序员的妻子在网上分享了她丈夫在北京工作八年的经历,月薪仅3万元,存款情况却出乎意料。本文探讨了高学历人才在大城市的职场现状及生活压力。 ...
[详细]
蜡笔小新 2024-12-28 11:14:15
本文将详细介绍如何使用 HBuilder 创建并运行一个基于 MUI 框架的移动应用项目。我们将逐步引导您完成项目的搭建、代码编写以及真机调试,帮助您快速入门移动应用开发。 ...
[详细]
蜡笔小新 2024-12-27 18:11:37