T086学习网 | 站长学院 | 技术文档 | 成语 | 歇后语 | 帝国时代 | 代码收藏 | IP地址查询 | 生活百科 | 生日密码 | CSS压缩 | 用户评论 | 欣欣百宝箱

分页学习心得1

【 本站原创作者:ITlearner 更新时间:2004-04-15 | 字体:
[导读]在DVBBS论坛上看到cwbnig写的一个关于数据库操作的类,就下载下来看一下。 发现其中在分页时读取记录时的代码比较特殊,至少以前我写程序时没有这样写过。 输出上下分页时也是再用“select count(*) from table wher...

在DVBBS论坛上看到cwbnig写的一个关于数据库操作的类,就下载下来看一下。

发现其中在分页时读取记录时的代码比较特殊,至少以前我写程序时没有这样写过。

输出上下分页时也是再用“select count(*) from table where 条件”而不是用已打开的rs.recordcount属性。以前有读过一些文章说用rs.recordcount很耗资源,于是用正在运行的程序测试了一下(每天1万IP左右的访问量)。数据库中共有687条数据。

原未改动前采用最普通的分页程序读出所有记录,第一次,406.25毫秒,第二次,296.875毫秒,第三次,343.750毫秒,后又刷新了好几次,最快一次是203.375毫秒。

改进分页的读取程序后,第一次,46.875毫秒,第二次,78.125毫秒,第三次,46.875毫秒。

真是差太多了,以后再也不用rs.recordcount了:(

然后再改读取记录的程序,原使用的是最普通的读取记录的程序,现改为如下代码
(SQL可用):
...
 max="SELECT MIN(id) FROM (SELECT TOP "&(page-1)*pagesize+1&" id FROM table ORDER BY id DESC) tbl"
 strsql="SELECT TOP "&pagesize&" * FROM table WHERE id <=("&max&") ORDER BY id DESC"
 rs.open strsql,conn,1,1
 ...
(ACCESS可用):
...
 strsql="SELECT TOP "&pagesize*page&" * FROM table ORDER BY id DESC"
 strsql="SELECT TOP "&pagesize&" * FROM ("&strsql&") AS tblme ORDER BY "&id&" ASC"
 strsql="SELECT * FROM ("&strsql&") AS tblme ORDER BY "&id&" DESC"
 rs.open sql,conn,1,1
...

不过,这个改了之后,页面执行时间到没有减少(可能是记录数不多的原因,明天找个记录数多点的再改一下)。一直是46.875毫秒,第二、三、五十几页都是这个速度,偶尔会出现32.125毫秒:)

  • 转载请注明来源:IT学习网 网址:http://www.t086.com/ 向您的朋友推荐此文章
  • 特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系我们,我们会尽快予以更正。
更多
留言建议ASP探针PHP探针站长Enjoy的Blog
© 2017 T086学习网 - T086.com(原itlearner.com)
RunTime:12.72ms QueryTime:7