一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - ASP教程 - 分頁實現方法的性能比較

分頁實現方法的性能比較

2019-09-17 13:13asp開發網 ASP教程

我們先給出幾種主要的分頁方法和核心語句,然后直接給出結論,有興趣的讀者可以看看后面的數據

幾種常用存儲過程分頁方法 
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也就有他自己的優勢,公司現在正在使用的存儲過程效率不錯,但是在頁碼靠后的情況下性能會降低.

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美黑人性 | 洗濯屋H纯肉动漫在线观看 武侠艳妇屈辱的张开双腿 午夜在线观看免费观看 视频 | 国产欧美日韩视频在线观看一区二区 | 亚洲AV久久无码精品蜜桃 | 13 sewang41| 放荡警察巨r麻麻出轨小说 范冰冰特黄xx大片 饭冈加奈子在线播放观看 法国老妇性xx在线播放 | 天堂精品高清1区2区3区 | 无人在线观看免费高清视频播放 | 亚洲精品国产综合久久一线 | 国内精品视频一区二区三区八戒 | 四虎4hu永久免费国产精品 | 亚洲欧美天堂 | 九九99亚洲精品久久久久 | 久久se精品一区二区国产 | 二区三区视频 | 国产成人亚洲精品91专区手机 | 精品国产一级在线观看 | 成人免费草草视频 | 娇妻终于接受了3p的调教 | 五月天黄网| 91天堂在线| 末代皇帝无删减版在线观看 | www.九九热| 男人天堂网www | 二次元美女挤奶漫画 | 亚洲天堂视频在线观看免费 | 99久久精品无码一区二区毛片 | 亚洲男gay| 国产成人综合亚洲亚洲欧美 | 免费看a片毛片 | 全日本爽视频在线 | 国产精品久久国产精品99 gif | 草草在线视频 | 亚洲午夜大片 | 青青草国产免费国产是公开 | 精品亚洲综合久久中文字幕 | xxxx在线视频 | 国产在视频线在精品 | 精品综合| 国产日产欧产精品精品软件 | 男人香蕉好大好爽视频 |