濮阳杆衣贸易有限公司

主頁 > 知識(shí)庫 > 分頁實(shí)現(xiàn)方法的性能比較

分頁實(shí)現(xiàn)方法的性能比較

熱門標(biāo)簽:高質(zhì)量的電銷外呼系統(tǒng) 硅基電話機(jī)器人加盟 外呼系統(tǒng)怎么話費(fèi) 無營(yíng)業(yè)執(zhí)照地圖標(biāo)注教學(xué) 電銷機(jī)器人采購 地圖標(biāo)注還可以做嗎 滴滴地圖標(biāo)注上車點(diǎn) 友邦互聯(lián)電銷機(jī)器人違法嗎 宿州防封外呼系統(tǒng)平臺(tái)
幾種常用存儲(chǔ)過程分頁方法
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 ...
臨時(shí)表
復(fù)制代碼 代碼如下:

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新語法,類似臨時(shí)表,但是生命周期稍微不同,這里只是他的一個(gè)運(yùn)用
with cte_temp--定義零時(shí)表,PageIndex是一個(gè)計(jì)算字段,儲(chǔ)存了搜索結(jié)果的頁號(hào)
As (ceiling((Row_Number() over(order by .... )-1)/@pagesize as int) as PageIndex,* from TableName where.....)
select * from cte_temp where pageindex=@pageindex-1;
結(jié)論:
TopN在小頁數(shù)下最快,如果在10頁以下,可以考慮用它,CTE和臨時(shí)表時(shí)間很穩(wěn)定,CTE消耗的時(shí)間比臨時(shí)表多,但是不會(huì)引起tempdb的暴漲和IO增加
性能比較
試驗(yàn)環(huán)境:win2003server,Sqlserver2005,庫大小2,567,245行,沒有where子句,試驗(yàn)時(shí)每頁大小50,頁碼作為變量
取0,3,10,31,100,316,1000,3162...頁,也就是10的指數(shù),試驗(yàn)結(jié)果如下
頁數(shù) TopN CTE 臨時(shí)表(有緩存) 臨時(shí)表(無緩存)
公司正在使用的存儲(chǔ)過程 CTE改進(jìn)
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
數(shù)據(jù)解釋和分析
臨時(shí)表分為有沒有緩存兩種時(shí)間,CTE就是上面的方法,CTE改進(jìn)只是把選入CTE臨時(shí)表的列數(shù)減少了,只選取了頁號(hào)和主鍵,Null表示時(shí)間無法計(jì)算(時(shí)間太長(zhǎng)),數(shù)據(jù)單位是毫秒.
從上面的數(shù)據(jù)可以看到,TopN在前32頁都是有優(yōu)勢(shì)的,但是頁數(shù)增大后,性能降低很快,CTE改進(jìn)比CTE有所進(jìn)步,平均進(jìn)步兩秒左右,但是還是比臨時(shí)表慢,但是考慮臨時(shí)表會(huì)增大日志文件的大小,引起大量IO,CTE也就有他自己的優(yōu)勢(shì),公司現(xiàn)在正在使用的存儲(chǔ)過程效率不錯(cuò),但是在頁碼靠后的情況下性能會(huì)降低

標(biāo)簽:新余 雅安 江門 廣元 錫林郭勒盟 宣城 儋州 七臺(tái)河

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《分頁實(shí)現(xiàn)方法的性能比較》,本文關(guān)鍵詞  分頁,實(shí)現(xiàn),方法,的,性能,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《分頁實(shí)現(xiàn)方法的性能比較》相關(guān)的同類信息!
  • 本頁收集關(guān)于分頁實(shí)現(xiàn)方法的性能比較的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    汝城县| 措勤县| 望城县| 湘阴县| 鹰潭市| 荣成市| 嘉祥县| 万年县| 五原县| 简阳市| 定南县| 体育| 江津市| 上蔡县| 邯郸市| 建始县| 柳江县| 乡宁县| 德兴市| 田东县| 怀集县| 古丈县| 开阳县| 佛冈县| 海口市| 松江区| 武安市| 临泉县| 巴林右旗| 建昌县| 靖宇县| 丰镇市| 红安县| 香河县| 孝昌县| 江城| 来安县| 隆安县| 红原县| 仁布县| 永平县|