仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 456|回复: 7
打印 上一主题 下一主题

[学习教程] ASP网站制作之ASP的高效力的分页算法

[复制链接]
灵魂腐蚀 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:06:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
实现规模效益。与传统的用户拥有硬件软件所有权和使用权以及传统的应用服务商提供一对一的服务模式不同,ASP拥有应用系统所有权,用户拥有使用权,应用系统集中放在ASP的数据中心中,集中管理,分散使用,以一对多的租赁的形式为众多用户提供有品质保证的应用技术服务,实现规模效益。一种高效的SELECTTOP分页算法。代码以下:

<%
每页的纪录数
dimpagesize
pagesize="30"<p>读出总纪录数,总页数,飘易注
DimTotalRecords,TotalPages
SQLstr="Selectcount(id)AsRecordSumFromtable1"
SetRs=conn.Execute(SQLstr,0,1)
TotalRecords=Rs("RecordSum")
ifInt(TotalRecords/pagesize)=TotalRecords/pagesizethen
TotalPages=TotalRecords/pagesize
else
TotalPages=Int(TotalRecords/pagesize)+1
endif
Rs.Close
SetRs=Nothing<p>以后页码,飘易注
dimpage
page=Request("page")
ifisnumeric(page)=falsethen
response.write"<SCRIPTlanguage=JavaScript>alert(参数毛病!);"
response.write"window.close();</SCRIPT>"
response.end
endif
Ifpage=""orpage<1Thenpage=1
Ifpage-TotalPages>0Thenpage=TotalPages
page=int(page)<p>ifpage=1then
sql="selecttop"&pagesize&"id,title,timefromtable1orderbytimedesc"
else
sql="selecttop"&pagesize&"id,title,timefromtable1wheretime<(SELECTMin(time)FROM(SELECTTOP"&pagesize*(page-1)&"timeFROMtable1ORDERBYtimedesc)AST)orderbytimedesc"
endif
Setrs=Server.CreateObject("ADODB.Recordset")
rs.Opensql,conn,1,1
DoWhileNotrs.Eof
response.write"每笔记录信息:"&rs("id")&"<br>"
rs.movenext
loop
rs.close
setrs=nothing
翻页代码省略……
%><p>这是一种十分高效的分页算法。当数据表中的数据量成百上万万的时分,下面的这类分页算法的呼应工夫长短常短的,一般在几十毫秒以内。道理很复杂,就是每次分页,我只取必要的几十笔记录罢了,利用SELECTTOP也恰是基于如许的思索。<p>下面的两个分页算法的例子中,flymorn都利用了工夫字段time来举行orderby排序,由于在我打仗的尽年夜多半体系中,我们都必要把用户比来更新(包含新增加的纪录和新修正过的老纪录)的内容展现在后面,假如仅仅利用主动编号的ID作为排序字段的话,用户编纂过的老信息将没法展现在后面。这就是flymorn利用工夫字段的缘故原由了。<p>这里又触及到聚合索引的成绩了。默许情形下,我们是以主动编号ID作为主键,而且用作聚合索引列,假如下面的算法中,利用如许的ID列来排序的话,效力会更高,数据库呼应的工夫会更少;但是,我提到了比来更新的内容必要展现在后面的成绩,以是,我们必需利用工夫字段来排序。因而,为了更高的分页效力,我们能够在数据库计划的时分,把这个工夫字段计划为聚合索引列。<p>经由过程如许的计划后,全部分页效力就会失掉十分高的进步了。<p>但是,把这个工夫字段作为聚合索引列,存在又一个小成绩。由于数据表在分列数据的时分,是依照聚合索引列来举行物理排序的,当用户增加数据的时分,没有甚么成绩,在数据表的开端增加就好了;当用户编纂信息的时分,数据库必要依据这个聚合索引列,把刚编纂过的信息也提到表的开端,这里就必要泯灭必定的工夫了。就是说,当我们以工夫字段为聚合索引列的时分,我们就必要在UPDATE数据的时分多泯灭一点的工夫。<p>但是,综合对照而言,飘易以为,SELECTTOP的高效分页算法的关头是要制止全表扫描,只管只猎取必要的字段,排序的字段最好是聚合索引列,理论标明,以聚合索引列来排序的SQL语句的呼应工夫是最快的。如许处置以后,关于SQLSERVER数据库来讲,即便上万万的数据量,也不必怕分页算法得到呼应了。<p>下面是以ASP言语为例写的算法,固然一样能够改革成其他的如ASP.NET,PHP言语所利用。为了更好的利用如许的分页代码,人人也能够把下面的算法改写成存储历程。<p>最初,留一个小成绩:SELECTTOP分页的时分,当翻页到最初的时分,假如排序字段列不是聚合索引列的时分,程序的呼应工夫会怎样呢?
ASP一般认为只能运行在IIS上,正如前面所提到的,这并不是十分正确,事实上,ASP也能运行在Apache上。ApacheASP可在任意Apache服务器上运行有限的ASP功能,所需做的,只需打开mod_perl。
小魔女 该用户已被删除
沙发
发表于 2015-1-18 20:22:12 来自手机 | 只看该作者
多看多学多思。多看一些关于ASP的书籍,一方面可以扩展知识面一方面可以鉴借别人是如何掌握、运用ASP的;多学善于关注别人,向同学老师多多学习,不论知识的大小;多思则是要将学到的知识灵活运用。
透明 该用户已被删除
板凳
发表于 2015-1-31 22:43:41 来自手机 | 只看该作者
如何学好ASP,以前也有人问过,把回答给你转过来看看能否对你有帮助:
若天明 该用户已被删除
地板
发表于 2015-2-7 01:20:30 | 只看该作者
以上是语言本身的弱点,在功能方面ASP同样存在问题,第一是功能太弱,一些底层操作只能通过组件来完成,在这点上是远远比不上PHP/JSP,其次就是缺乏完善的纠错/调试功能,这点上ASP/PHP/JSP差不多。
深爱那片海 该用户已被删除
5#
发表于 2015-2-19 08:35:47 | 只看该作者
我想问如何掌握学习节奏(先学什么再学什么)最好详细点?
6#
发表于 2015-3-6 14:32:14 | 只看该作者
代码逻辑混乱,难于管理:由于ASP是脚本语言混合html编程,所以你很难看清代码的逻辑关系,并且随着程序的复杂性增加,使得代码的管理十分困难,甚至超出一个程序员所能达到的管理能力,从而造成出错或这样那样的问题。
分手快乐 该用户已被删除
7#
发表于 2015-3-13 02:10:10 | 只看该作者
运用ASP可将VBscript、javascript等脚本语言嵌入到HTML中,便可快速完成网站的应用程序,无需编译,可在服务器端直接执行。容易编写,使用普通的文本编辑器编写,如记事本就可以完成。由脚本在服务器上而不是客户端运行,ASP所使用的脚本语言都在服务端上运行。
飘灵儿 该用户已被删除
8#
发表于 2015-3-20 10:21:16 | 只看该作者
跟学别的语言一样,先掌握变量,流程控制语句(就是ifwhileselect)等,函数/过程,数组
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 06:51

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表