简易方法提高ASP分页效率
简易方法提高ASP分页效率
提高ASP分页效率有几种比较常用的方法:
1、使用存储过程
一般ASP+SQL Server可以使用存储过程来提高分页效率,但对于Access数据库,此方法就不能使用了,因为Access数据库不支持存储过程。存储过程分页,只需要传入当前页数,然后在存储过程中计算所要获取的记录范围,再查询出来。存储过程在数据库端执行,只需要返回所需的结果,节省网络带宽,从而提高了分页效率。在这里就不贴代码了,可以搜索本站或到搜索引擎上去查找。
2、使用开始和结尾ID
使用此方面,URL中一般都带有“开始ID”和“结尾ID”,如:url=list.asp?page=2&beginid=35&endid=50,在写SQL查询语句时,就可以限定查询的范围,而不用把所有的记录查出来再进行分页,简单来讲就是:查出需要的记录,不需要的记录不查出来。下面的SQL语句就是查出10条记录。
sql = "select top 10 from [Article] where [ID]>" & beginid
这种方式也不失为一种好方法,但是url会比较长,比较复杂,可能不利于搜索引擎收录。
上面的方法都是行之有效的,但略有不足,下面是简易的提高分页高效率的方法,其他可以用于ASP.NET、PHP、JSP等
就是对第一页或前几页使用TOP,因为一般分页前几页被访客浏览的可能性比较高,越后越少人浏览,基于这种考虑产生了高效率简易分页方法。
下面的ASP代码,这里只写出部分代码:
Dim sql, currentpage, pagesize
pagesize = 10 '毎页记录数
currentpage = Request.QueryString("page") '当前页数
If Len(currentpage) = 0 Then currentpage = 1
If Not IsNumeric(currentpage) Then currentpage = 1
If currentpage <= 5 Then
sql = "select top " & currentpage * pagesize & " [Title],[Content] from [Article]"
Else
sql = "select [Title],[Content] from [Aritcle]"
End If
上面的代码,每一页只查10条记录,第二页20条···第五页50条,六页开始就查全部。这样前几页的效率有飞跃的提升,但后面的页面就没有提升效率。
如果访问量很大,对效率要求更高,可考虑静态化,生成HTML页面,这样生成后的速度就很好了。
- 暂时没有评论!
