网站运营
位置:首页>> 网站运营>> 分页实现方法的性能比较

分页实现方法的性能比较

 来源:CSDN 发布时间:2007-06-24 12:41:00 

标签:

我们先给出几种主要的分页方法和核心语句,然后直接给出结论,有兴趣的读者可以看看后面的数据

几种常用存储过程分页方法

TopN方法

select Top(@PageSize) from TableName where ID Not IN 

(Select Top ((@PageIndex-1)*@PageSize)  ID from Table Name where .... order by ... )

where .... order by ...

临时表

declare @indextable table(id int identity(1,1),nid int,PostUserName nvarchar(50))

declare @PageLowerBound int

declare @PageUpperBound int

set @PageLowerBound=(@pageindex-1)*@pagesize--下限

set @PageUpperBound=@PageLowerBound+@pagesize--上限

set rowcount @PageUpperBound

insert into @indextable(nid,PostUserName) select ReplyID,PostUserName from  TableName order by ......

select *  from  TableName p,@indextable t where p.ID=t.nid

and t.id>@PageLowerBound and t.id<=@PageUpperBound order by t.id


CTE--2005新语法,类似临时表,但是生命周期稍微不同,这里只是他的一个运用

with cte_temp--定义零时表,PageIndex是一个计算字段,储存了搜索结果的页号

 As (ceiling((Row_Number() over(order by .... )-1)/@pagesize as int) as PageIndex,* from TableName where.....)
select *  from cte_temp where pageindex=@pageindex-1;

 

结论:

TopN在小页数下最快,如果在10页以下,可以考虑用它,CTE和临时表时间很稳定,CTE消耗的时间比临时表多,但是不会引起tempdb的暴涨和IO增加

性能比较

试验环境:win2003server,Sqlserver2005,库大小2,567,245行,没有where子句,试验时每页大小50,页码作为变量

取0,3,10,31,100,316,1000,3162...页,也就是10的指数,试验结果如下

     页数     TopN      CTE   临时表(有缓存)   临时表(无缓存)
 公司正在使用的存储过程  CTE改进
1 3 12 10 101 457 7302
3 15 7 79 5524 464 7191
10 127 5504 88 3801 464 6116
32 588 9672 122 3601 976 7602
100 4680 9738 166 4235 486 7151
316 45271 9764 323 3867 522 7255
1000     Null 9806 869 2578 635 8948
3162     Null 9822 2485 4110 12460 8210
10000     Null 9754 7812 11926 14250 7359
31623     Null 9775 18729 33218 15249 7511
100000     Null     Null 31538 55569 17139 6124

数据解释和分析

临时表分为有没有缓存两种时间,CTE就是上面的方法,CTE改进只是把选入CTE临时表的列数减少了,只选取了页号和主键,Null表示时间无法计算(时间太长),数据单位是毫秒.

从上面的数据可以看到,TopN在前32页都是有优势的,但是页数增大后,性能降低很快,CTE改进比CTE有所进步,平均进步两秒左右,但是还是比临时表慢,但是考虑临时表会增大日志文件的大小,引起大量IO,CTE也就有他自己的优势,公司现在正在使用的存储过程效率不错,但是在页码靠后的情况下性能会降低

0
投稿

猜你喜欢

  • 百度终于对外承认早已启动进军IM的步伐。上周五,百度首次对外宣布对最新开发的即时通讯(IM)产品进行内测。该产品被定名为“百度Hi”。不过,
  • 当用户试图通过 HTTP 或文件传输协议 (FTP) 访问一台正在运行 Internet 信息服务 (IIS) 的服务器上的内容时,IIS
  • 核心提示: 2.0的疲势在于盈利模式的不清晰,盈利模式的不清晰,又在于它没有一张清晰的脸,也就是首页。web2.0,有如digg、delic
  • 网站改版是个忌讳。很多人因为网站改版,出现了很多问题。例如改版后蜘蛛不了,收录直线下降了,有的甚至直接让K了。经常在各大论坛看到这样的信息,
  • 了解缓存中毒攻击近来,网络上出现史上最强大的互联网漏洞——DNS缓存漏洞,此漏洞直指我们应用中互联网脆弱的安全系统,而安全性差的根源在于设计
  • named查询使用的是UDP协议和端口53。响应通过UDP返回,除非他们大于512K,这种情况使用TCP。服务器之间的“区传送”则都使用TC
  • 北京时间11月12日消息,据国外媒体报道,在线零售商亚马逊周四宣布,它将从明年初开始向亚洲的商业公司提供各种网络服务。亚马逊提供的网络服务包
  • 网站更换域名后通常会进行网址301重定向,通过301重定向可以把旧域名的权重转移到新域名,把不带www的域名权重转移到带www的域名,有利于
  • 1,文章页的tag的调用解决办法V5.3TAG的调用方式为:TAG:{dede:field.tags/} 这个在内容页模板中使用全局标签{d
  • 百度指数(index.baidu.com)是百度搜索推出的一个用于分析关键词热度的工具,对站长的SEO策划非常有帮助。网趣在线将从各个方面挖
  • 10月14日消息,瑞士信贷周二表示,受惠于2010年上半年对于新款服务器芯片-Nehalem的强劲需求,将有助于提高英特尔的收入。瑞士信贷因
  • 又读了一遍这个 PPT: Federation at Flickr: Doing Billions of Queries Per Day ,
  • ◎金流,物流,信息流的改变互联网发展10年以降,「金流,物流,信息流」这三流人人琅琅上口,特别是在电子商务的领域中,这三者的完备足以产生许多
  • 做网站秘诀有很多高手总结的很好,不管那一种能引导站长成功影响部分人的人生价值观,才是真的成功。作者总结十种也是一种新的领悟。做网站其实心态相
  • 10月21日消息,全球最大下载引擎迅雷,从2009年9月底至10月底隆重开展&ldquo;迅雷2010高校人才发现计划&rd
  • Windows下的WWW服务器以其架设方便、操作简单赢得了很多人的青睐,下面将以Windows Server 2003为例,介绍如何配置一个
  • 2.6. 资源记录域名标记结点,每个结点都有资源信息集,些集可以为空。资源信息集和由分离资源集(RR)的特殊名字相关联。在集中的RR顺序没有
  • IIS(InternetInformationServer)作为当今流行的Web服务器之一,提供了强大的Internet和Intranet服
  • 由于中国伟大的防火墙所在,美国主机的IP经常被封,Godaddy的主机也不例外,下面介绍几种解决办法。1.最简单的办法:马上购买独立IP ,
  • RHEL4中的vsftpd在编译时已经支持tcp_wrappers,因此可以利用tcp_wrappers实现主机访问控制。实验之前,首先说下
手机版 网站运营 asp之家 www.aspxhome.com