亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

各種分頁(yè)存儲(chǔ)過(guò)程性能比較

系統(tǒng) 2058 0

在項(xiàng)目中,我們經(jīng)常遇到或用到分頁(yè),那么在大數(shù)據(jù)量(百萬(wàn)級(jí)以上)下,哪種分頁(yè)算法效率最優(yōu)呢?我們不妨用事實(shí)說(shuō)話。

?

測(cè)試環(huán)境

硬件:CPU 酷睿雙核T5750? 內(nèi)存:2G

軟件:Windows server 2003??? +?? Sql server 2005

?

OK,我們首先創(chuàng)建一數(shù)據(jù)庫(kù):data_Test,并在此數(shù)據(jù)庫(kù)中創(chuàng)建一表:tb_TestTable

?


?1 create?database?data_Test??--創(chuàng)建數(shù)據(jù)庫(kù)data_Test?
?2 GO?
?3 use?data_Test?
?4 GO?
?5 create?table?tb_TestTable???--創(chuàng)建表?
?6 (?
?7 ????id?int?identity(1,1)?primary?key,?
?8 ????userName?nvarchar(20)?not?null,?
?9 ????userPWD?nvarchar(20)?not?null,?
10 ????userEmail?nvarchar(40)?null?
11 )?
12 GO

?

然后我們?cè)跀?shù)據(jù)表中插入2000000條數(shù)據(jù):

?


?1 --插入數(shù)據(jù)?
?2 set?identity_insert?tb_TestTable?on?
?3 declare?@count?int?
?4 set?@count=1?
?5 while?@count<=2000000?
?6 begin??
?7 ????insert?into?tb_TestTable(id,userName,userPWD,userEmail)?values(@count,'admin','admin888','lli0077@yahoo.com.cn')?
?8 ????set?@count=@count+1?
?9 end?
10 set?identity_insert?tb_TestTable?off

?

我首先寫了五個(gè)常用存儲(chǔ)過(guò)程:

1,利用select top 和select not in進(jìn)行分頁(yè),具體代碼如下:

?


?1 create?procedure?proc_paged_with_notin??--利用select?top?and?select?not?in?
?2 (?
?3 ????@pageIndex?int,??--頁(yè)索引?
?4 ????@pageSize?int????--每頁(yè)記錄數(shù)?
?5 )?
?6 as?
?7 begin?
?8 ????set?nocount?on;?
?9 ????declare?@timediff?datetime?--耗時(shí)?
10 ????declare?@sql?nvarchar(500)?
11 ????select?@timediff=Getdate()?
12 ????set?@sql='select?top?'+str(@pageSize)+'?*?from?tb_TestTable?where(ID?not?in(select?top?'+str(@pageSize*@pageIndex)+'?id?from?tb_TestTable?order?by?ID?ASC))?order?by?ID'?
13 ????execute(@sql)??--因select?top后不支技直接接參數(shù),所以寫成了字符串@sql?
14 ????select?datediff(ms,@timediff,GetDate())?as?耗時(shí)?
15 ????set?nocount?off;?
16 end

?

2,利用select top 和 select max(列鍵)

?

?


?1 create?procedure?proc_paged_with_selectMax??--利用select?top?and?select?max(列)?
?2 (?
?3 ????@pageIndex?int,??--頁(yè)索引?
?4 ????@pageSize?int????--頁(yè)記錄數(shù)?
?5 )?
?6 as?
?7 begin?
?8 set?nocount?on;?
?9 ????declare?@timediff?datetime?
10 ????declare?@sql?nvarchar(500)?
11 ????select?@timediff=Getdate()?
12 ????set?@sql='select?top?'+str(@pageSize)+'?*?From?tb_TestTable?where(ID>(select?max(id)?From?(select?top?'+str(@pageSize*@pageIndex)+'?id?From?tb_TestTable?order?by?ID)?as?TempTable))?order?by?ID'?
13 ????execute(@sql)?
14 ????select?datediff(ms,@timediff,GetDate())?as?耗時(shí)?
15 set?nocount?off;?
16 end

?

3,利用select top和中間變量--此方法因網(wǎng)上有人說(shuō)效果最佳,所以貼出來(lái)一同測(cè)試

?

?


?1 create?procedure?proc_paged_with_Midvar??--利用ID>最大ID值和中間變量?
?2 (?
?3 ????@pageIndex?int,?
?4 ????@pageSize?int?
?5 )?
?6 as?
?7 ????declare?@count?int?
?8 ????declare?@ID?int?
?9 ????declare?@timediff?datetime?
10 ????declare?@sql?nvarchar(500)?
11 begin?
12 set?nocount?on;?
13 ????select?@count=0,@ID=0,@timediff=getdate()?
14 ????select?@count=@count+1,@ID=case?when?@count<=@pageSize*@pageIndex?then?ID?else?@ID?end?from?tb_testTable?order?by?id?
15 ????set?@sql='select?top?'+str(@pageSize)+'?*?from?tb_testTable?where?ID>'+str(@ID)?
16 ????execute(@sql)?
17 ????select?datediff(ms,@timediff,getdate())?as?耗時(shí)?
18 set?nocount?off;?
19 end
20

?

4,利用Row_number() 此方法為SQL server 2005中新的方法,利用Row_number()給數(shù)據(jù)行加上索引

?

?

?


?1 create?procedure?proc_paged_with_Rownumber??--利用SQL?2005中的Row_number()?
?2 (?
?3 ????@pageIndex?int,?
?4 ????@pageSize?int?
?5 )?
?6 as?
?7 ????declare?@timediff?datetime?
?8 begin?
?9 set?nocount?on;?
10 ????select?@timediff=getdate()?
11 ????select?*?from?(select?*,Row_number()?over(order?by?ID?asc)?as?IDRank?from?tb_testTable)?as?IDWithRowNumber?where?IDRank>@pageSize*@pageIndex?and?IDRank<@pageSize*(@pageIndex+1)?
12 ????select?datediff(ms,@timediff,getdate())?as?耗時(shí)?
13 set?nocount?off;?
14 end
15

5,利用臨時(shí)表及Row_number

?

?


?1 create?procedure?proc_CTE??--利用臨時(shí)表及Row_number?
?2 (?
?3 ????@pageIndex?int,??--頁(yè)索引?
?4 ????@pageSize?int????--頁(yè)記錄數(shù)?
?5 )?
?6 as?
?7 ????set?nocount?on;?
?8 ????declare?@ctestr?nvarchar(400)?
?9 ????declare?@strSql?nvarchar(400)?
10 ????declare?@datediff?datetime?
11 begin?
12 ????select?@datediff=GetDate()?
13 ????set?@ctestr='with?Table_CTE?as?
14 ????????????????(select?ceiling((Row_number()?over(order?by?ID?ASC))/'+str(@pageSize)+')?as?page_num,*?from?tb_TestTable)';?
15 ????set?@strSql=@ctestr+'?select?*?From?Table_CTE?where?page_num='+str(@pageIndex)?
16 end?
17 ????begin?
18 ????????execute?sp_executesql?@strSql?
19 ????????select?datediff(ms,@datediff,GetDate())?
20 ????set?nocount?off;?
21 ????end
22

?

OK,至此,存儲(chǔ)過(guò)程創(chuàng)建完畢,我們分別在每頁(yè)10條數(shù)據(jù)的情況下在第2頁(yè),第1000頁(yè),第10000頁(yè),第100000頁(yè),第199999頁(yè)進(jìn)行測(cè)試,耗時(shí)單位:ms? 每頁(yè)測(cè)試5次取其平均值

存過(guò) 第2頁(yè)耗時(shí) 第1000頁(yè)耗時(shí) 第10000頁(yè)耗時(shí) 第100000頁(yè)耗時(shí) 第199999頁(yè)耗時(shí) 效率排行
1用not in 0ms 16ms 47ms 475ms 953ms 3
2用select max 5ms 16ms 35ms 325ms 623ms 1
3中間變量 966ms 970ms 960ms 945ms 933ms 5
4row_number 0ms 0ms 34ms 365ms 710ms 2
4臨時(shí)表 780ms 796ms 798ms 780ms 805ms 4

?

測(cè)試結(jié)果顯示:select max >row_number>not in>臨時(shí)表>中間變量

?

于是我對(duì)效率最高的select max方法用2分法進(jìn)行了擴(kuò)展,代碼取自互聯(lián)網(wǎng),我修改了ASC排序時(shí)取不到值的BUG,測(cè)試結(jié)果:

2分法 156ms 156ms 180ms 470ms 156ms 1*

?

從測(cè)試結(jié)果來(lái)看,使用2分法確實(shí)可以提高效率并使效率更為穩(wěn)定,我又增加了第159999頁(yè)的測(cè)試,用時(shí)僅296ms,效果相當(dāng)?shù)牟诲e(cuò)!

?

下面是2分法使用select max的代碼,已相當(dāng)完善。

?

?


??1 --/*-----存儲(chǔ)過(guò)程?分頁(yè)處理?孫偉?2005-03-28創(chuàng)建?-------*/?
??2 --/*-----存儲(chǔ)過(guò)程?分頁(yè)處理?浪塵?2008-9-1修改----------*/?
??3 --/*-----?對(duì)數(shù)據(jù)進(jìn)行了2分處理使查詢前半部分?jǐn)?shù)據(jù)與查詢后半部分?jǐn)?shù)據(jù)性能相同?-------*/?
??4
??5 alter?PROCEDURE?proc_paged_2part_selectMax?
??6 (?
??7 @tblName?????nvarchar(200),????????----要顯示的表或多個(gè)表的連接?
??8 @fldName?????nvarchar(500)?=?'*',????----要顯示的字段列表?
??9 @pageSize????int?=?10,????????----每頁(yè)顯示的記錄個(gè)數(shù)?
?10 @page????????int?=?1,????????----要顯示那一頁(yè)的記錄?
?11 @fldSort????nvarchar(200)?=?null,????----排序字段列表或條件?
?12 @Sort????????bit?=?0,????????---- 排序方法,0為升序,1為降序(如果是多字段排列Sort指代最后一個(gè)排序字段的排列順序(最后一個(gè)排序字段不加排序標(biāo)記)--程序傳參 如:'?SortA?Asc,SortB?Desc,SortC?')?
?13 @strCondition????nvarchar(1000)?=?null,????----查詢條件,不需where?
?14 @ID????????nvarchar(150),????????----主表的主鍵?
?15 @Dist?????????????????bit?=?0,???????????----是否添加查詢字段的?DISTINCT?默認(rèn)0不添加/1添加?
?16 @pageCount????int?=?1?output,????????????----查詢結(jié)果分頁(yè)后的總頁(yè)數(shù)?
?17 @Counts????int?=?1?output????????????????----查詢到的記錄數(shù)?
?18 )?
?19 AS?
?20 SET?NOCOUNT?ON?
?21 Declare?@sqlTmp?nvarchar(1000)????????----存放動(dòng)態(tài)生成的SQL語(yǔ)句?
?22 Declare?@strTmp?nvarchar(1000)????????----存放取得查詢結(jié)果總數(shù)的查詢語(yǔ)句?
?23 Declare?@strID?????nvarchar(1000)????????----存放取得查詢開(kāi)頭或結(jié)尾ID的查詢語(yǔ)句?
?24
?25 Declare?@strSortType?nvarchar(10)????----數(shù)據(jù)排序規(guī)則A?
?26 Declare?@strFSortType?nvarchar(10)????----數(shù)據(jù)排序規(guī)則B?
?27
?28 Declare?@SqlSelect?nvarchar(50)?????????----對(duì)含有DISTINCT的查詢進(jìn)行SQL構(gòu)造?
?29 Declare?@SqlCounts?nvarchar(50)??????????----對(duì)含有DISTINCT的總數(shù)查詢進(jìn)行SQL構(gòu)造?
?30
?31 declare?@timediff?datetime??--耗時(shí)測(cè)試時(shí)間差?
?32 select?@timediff=getdate()?
?33
?34 if?@Dist??=?0?
?35 begin?
?36 ????set?@SqlSelect?=?'select?'?
?37 ????set?@SqlCounts?=?'Count(*)'?
?38 end?
?39 else?
?40 begin?
?41 ????set?@SqlSelect?=?'select?distinct?'?
?42 ????set?@SqlCounts?=?'Count(DISTINCT?'+@ID+')'?
?43 end?
?44
?45
?46 if?@Sort=0?
?47 begin?
?48 ????set?@strFSortType='?ASC?'?
?49 ????set?@strSortType='?DESC?'?
?50 end?
?51 else?
?52 begin?
?53 ????set?@strFSortType='?DESC?'?
?54 ????set?@strSortType='?ASC?'?
?55 end?
?56
?57
?58
?59 --------生成查詢語(yǔ)句--------?
?60 --此處@strTmp為取得查詢結(jié)果數(shù)量的語(yǔ)句?
?61 if?@strCondition?is?null?or?@strCondition=''?????--沒(méi)有設(shè)置顯示條件?
?62 begin?
?63 ????set?@sqlTmp?=??@fldName?+?'?From?'?+?@tblName?
?64 ????set?@strTmp?=?@SqlSelect+'?@Counts='+@SqlCounts+'?FROM?'+@tblName?
?65 ????set?@strID?=?'?From?'?+?@tblName?
?66 end?
?67 else?
?68 begin?
?69 ????set?@sqlTmp?=?+?@fldName?+?'From?'?+?@tblName?+?'?where?(1>0)?'?+?@strCondition?
?70 ????set?@strTmp?=?@SqlSelect+'?@Counts='+@SqlCounts+'?FROM?'+@tblName?+?'?where?(1>0)?'?+?@strCondition?
?71 ????set?@strID?=?'?From?'?+?@tblName?+?'?where?(1>0)?'?+?@strCondition?
?72 end?
?73
?74 ----取得查詢結(jié)果總數(shù)量-----?
?75 exec?sp_executesql?@strTmp,N'@Counts?int?out?',@Counts?out?
?76 declare?@tmpCounts?int?
?77 if?@Counts?=?0?
?78 ????set?@tmpCounts?=?1?
?79 else?
?80 ????set?@tmpCounts?=?@Counts?
?81
?82 ????--取得分頁(yè)總數(shù)?
?83 ????set?@pageCount=(@tmpCounts+@pageSize-1)/@pageSize?
?84
?85 各種分頁(yè)存儲(chǔ)過(guò)程 - zhc3191012 - 永遠(yuǎn)追逐_我心永恒 ????/**//**當(dāng)前頁(yè)大于總頁(yè)數(shù)?取最后一頁(yè)**/?
?86 ????if?@page>@pageCount?
?87 ????????set?@page=@pageCount?
?88
?89 ????--/*-----數(shù)據(jù)分頁(yè)2分處理-------*/?
?90 ????declare?@pageIndex?int?--總數(shù)/頁(yè)大小?
?91 ????declare?@lastcount?int?--總數(shù)%頁(yè)大小??
?92
?93 ????set?@pageIndex?=?@tmpCounts/@pageSize?
?94 ????set?@lastcount?=?@tmpCounts%@pageSize?
?95 ????if?@lastcount?>?0?
?96 ????????set?@pageIndex?=?@pageIndex?+?1?
?97 ????else?
?98 ????????set?@lastcount?=?@pagesize?
?99
100 ????--//***顯示分頁(yè)?
101 ????if?@strCondition?is?null?or?@strCondition=''?????--沒(méi)有設(shè)置顯示條件?
102 ????begin?
103 ????????if?@pageIndex<2?or?@page<=@pageIndex?/?2?+?@pageIndex?%?2???--前半部分?jǐn)?shù)據(jù)處理?
104 ????????????begin??
105 ????????????????if?@page=1?
106 ????????????????????set?@strTmp=@SqlSelect+'?top?'+?CAST(@pageSize?as?VARCHAR(4))+'?'+?@fldName+'?from?'+@tblName?????????????????????????
107 ????????????????????????+'?order?by?'+?@fldSort?+'?'+?@strFSortType?
108 ????????????????else?
109 ????????????????begin?
110 ????????????????????if?@Sort=1?
111 ????????????????????begin?????????????????????
112 ????????????????????set?@strTmp=@SqlSelect+'?top?'+?CAST(@pageSize?as?VARCHAR(4))+'?'+?@fldName+'?from?'+@tblName?
113 ????????????????????????+'?where?'+@ID+'?<(select?min('+?@ID?+')?from?('+?@SqlSelect+'?top?'+?CAST(@pageSize*(@page-1)?as?Varchar(20))?+'?'+?@ID?+'?from?'+@tblName?
114 ????????????????????????+'?order?by?'+?@fldSort?+'?'+?@strFSortType+')?AS?TBMinID)'?
115 ????????????????????????+'?order?by?'+?@fldSort?+'?'+?@strFSortType?
116 ????????????????????end?
117 ????????????????????else?
118 ????????????????????begin?
119 ????????????????????set?@strTmp=@SqlSelect+'?top?'+?CAST(@pageSize?as?VARCHAR(4))+'?'+?@fldName+'?from?'+@tblName?
120 ????????????????????????+'?where?'+@ID+'?>(select?max('+?@ID?+')?from?('+?@SqlSelect+'?top?'+?CAST(@pageSize*(@page-1)?as?Varchar(20))?+'?'+?@ID?+'?from?'+@tblName?
121 ????????????????????????+'?order?by?'+?@fldSort?+'?'+?@strFSortType+')?AS?TBMinID)'?
122 ????????????????????????+'?order?by?'+?@fldSort?+'?'+?@strFSortType??
123 ????????????????????end?
124 ????????????????end?????
125 ????????????end?
126 ????????else?
127 ????????????begin?
128 ????????????set?@page?=?@pageIndex-@page+1?--后半部分?jǐn)?shù)據(jù)處理?
129 ????????????????if?@page?<=?1?--最后一頁(yè)數(shù)據(jù)顯示?????????????????
130 ????????????????????set?@strTmp=@SqlSelect+'?*?from?('+@SqlSelect+'?top?'+?CAST(@lastcount?as?VARCHAR(4))+'?'+?@fldName+'?from?'+@tblName?
131 ????????????????????????+'?order?by?'+?@fldSort?+'?'+?@strSortType+')?AS?TempTB'+'?order?by?'+?@fldSort?+'?'+?@strFSortType??
132 ????????????????else?
133 ????????????????????if?@Sort=1?
134 ????????????????????begin?
135 ????????????????????set?@strTmp=@SqlSelect+'?*?from?('+@SqlSelect+'?top?'+?CAST(@pageSize?as?VARCHAR(4))+'?'+?@fldName+'?from?'+@tblName?
136 ????????????????????????+'?where?'+@ID+'?>(select?max('+?@ID?+')?from('+?@SqlSelect+'?top?'+?CAST(@pageSize*(@page-2)+@lastcount?as?Varchar(20))?+'?'+?@ID?+'?from?'+@tblName?
137 ????????????????????????+'?order?by?'+?@fldSort?+'?'+?@strSortType+')?AS?TBMaxID)'?
138 ????????????????????????+'?order?by?'+?@fldSort?+'?'+?@strSortType+')?AS?TempTB'+'?order?by?'+?@fldSort?+'?'+?@strFSortType?
139 ????????????????????end?
140 ????????????????????else?
141 ????????????????????begin?
142 ????????????????????set?@strTmp=@SqlSelect+'?*?from?('+@SqlSelect+'?top?'+?CAST(@pageSize?as?VARCHAR(4))+'?'+?@fldName+'?from?'+@tblName?
143 ????????????????????????+'?where?'+@ID+'?<(select?min('+?@ID?+')?from('+?@SqlSelect+'?top?'+?CAST(@pageSize*(@page-2)+@lastcount?as?Varchar(20))?+'?'+?@ID?+'?from?'+@tblName?
144 ????????????????????????+'?order?by?'+?@fldSort?+'?'+?@strSortType+')?AS?TBMaxID)'?
145 ????????????????????????+'?order?by?'+?@fldSort?+'?'+?@strSortType+')?AS?TempTB'+'?order?by?'+?@fldSort?+'?'+?@strFSortType??
146 ????????????????????end?
147 ????????????end?
148 ????end?
149
150 ????else?--有查詢條件?
151 ????begin?
152 ????????if?@pageIndex<2?or?@page<=@pageIndex?/?2?+?@pageIndex?%?2???--前半部分?jǐn)?shù)據(jù)處理?
153 ????????begin?
154 ????????????????if?@page=1?
155 ????????????????????set?@strTmp=@SqlSelect+'?top?'+?CAST(@pageSize?as?VARCHAR(4))+'?'+?@fldName+'?from?'+@tblName?????????????????????????
156 ????????????????????????+'?where?1=1?'?+?@strCondition?+?'?order?by?'+?@fldSort?+'?'+?@strFSortType?
157 ????????????????else?if(@Sort=1)?
158 ????????????????begin?????????????????????
159 ????????????????????set?@strTmp=@SqlSelect+'?top?'+?CAST(@pageSize?as?VARCHAR(4))+'?'+?@fldName+'?from?'+@tblName?
160 ????????????????????????+'?where?'+@ID+'?<(select?min('+?@ID?+')?from?('+?@SqlSelect+'?top?'+?CAST(@pageSize*(@page-1)?as?Varchar(20))?+'?'+?@ID?+'?from?'+@tblName?
161 ????????????????????????+'?where?(1=1)?'?+?@strCondition?+'?order?by?'+?@fldSort?+'?'+?@strFSortType+')?AS?TBMinID)'?
162 ????????????????????????+'?'+?@strCondition?+'?order?by?'+?@fldSort?+'?'+?@strFSortType?
163 ????????????????end?
164 ????????????????else?
165 ????????????????begin?
166 ????????????????????set?@strTmp=@SqlSelect+'?top?'+?CAST(@pageSize?as?VARCHAR(4))+'?'+?@fldName+'?from?'+@tblName?
167 ????????????????????????+'?where?'+@ID+'?>(select?max('+?@ID?+')?from?('+?@SqlSelect+'?top?'+?CAST(@pageSize*(@page-1)?as?Varchar(20))?+'?'+?@ID?+'?from?'+@tblName?
168 ????????????????????????+'?where?(1=1)?'?+?@strCondition?+'?order?by?'+?@fldSort?+'?'+?@strFSortType+')?AS?TBMinID)'?
169 ????????????????????????+'?'+?@strCondition?+'?order?by?'+?@fldSort?+'?'+?@strFSortType??
170 ????????????????end????????????
171 ????????end?
172 ????????else?
173 ????????begin??
174 ????????????set?@page?=?@pageIndex-@page+1?--后半部分?jǐn)?shù)據(jù)處理?
175 ????????????if?@page?<=?1?--最后一頁(yè)數(shù)據(jù)顯示?
176 ????????????????????set?@strTmp=@SqlSelect+'?*?from?('+@SqlSelect+'?top?'+?CAST(@lastcount?as?VARCHAR(4))+'?'+?@fldName+'?from?'+@tblName?
177 ????????????????????????+'?where?(1=1)?'+?@strCondition?+'?order?by?'+?@fldSort?+'?'+?@strSortType+')?AS?TempTB'+'?order?by?'+?@fldSort?+'?'+?@strFSortType??????????????????????
178 ????????????else?if(@Sort=1)?
179 ????????????????????set?@strTmp=@SqlSelect+'?*?from?('+@SqlSelect+'?top?'+?CAST(@pageSize?as?VARCHAR(4))+'?'+?@fldName+'?from?'+@tblName?
180 ????????????????????????+'?where?'+@ID+'?>(select?max('+?@ID?+')?from('+?@SqlSelect+'?top?'+?CAST(@pageSize*(@page-2)+@lastcount?as?Varchar(20))?+'?'+?@ID?+'?from?'+@tblName?
181 ????????????????????????+'?where?(1=1)?'+?@strCondition?+'?order?by?'+?@fldSort?+'?'+?@strSortType+')?AS?TBMaxID)'?
182 ????????????????????????+'?'+?@strCondition+'?order?by?'+?@fldSort?+'?'+?@strSortType+')?AS?TempTB'+'?order?by?'+?@fldSort?+'?'+?@strFSortType?????
183 ????????????else?
184 ????????????????????set?@strTmp=@SqlSelect+'?*?from?('+@SqlSelect+'?top?'+?CAST(@pageSize?as?VARCHAR(4))+'?'+?@fldName+'?from?'+@tblName?
185 ????????????????????????+'?where?'+@ID+'?<(select?min('+?@ID?+')?from('+?@SqlSelect+'?top?'+?CAST(@pageSize*(@page-2)+@lastcount?as?Varchar(20))?+'?'+?@ID?+'?from?'+@tblName?
186 ????????????????????????+'?where?(1=1)?'+?@strCondition?+'?order?by?'+?@fldSort?+'?'+?@strSortType+')?AS?TBMaxID)'?
187 ????????????????????????+'?'+?@strCondition+'?order?by?'+?@fldSort?+'?'+?@strSortType+')?AS?TempTB'+'?order?by?'+?@fldSort?+'?'+?@strFSortType?????????????
188 ????????end?????
189 ????end?
190
191 ------返回查詢結(jié)果-----?
192 exec?sp_executesql?@strTmp?
193 select?datediff(ms,@timediff,getdate())?as?耗時(shí)?
194 --print?@strTmp?
195 SET?NOCOUNT?OFF?
196 GO
197

?

執(zhí)行示例:exec proc_paged_2part_selectMax 'tb_testTable','ID,userName,userPWD,userEmail',10,100000,'ID',0,null,'ID',0

?

這種測(cè)試只在單機(jī)進(jìn)行,并且沒(méi)有在實(shí)際開(kāi)發(fā)WEB項(xiàng)目中分頁(yè)測(cè)試,測(cè)試項(xiàng)也比較單一,所以不夠全面系統(tǒng),但從其效率相比上,我們可以在數(shù)據(jù)庫(kù)分頁(yè)算法上進(jìn)行有效的控制。

各種分頁(yè)存儲(chǔ)過(guò)程性能比較


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!??!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 色视频一区二区三区 | 老太婆性杂交毛片 | 国产日韩欧美亚洲综合首页 | 亚洲天堂一区 | 一级aa 毛片高清免费看 | 国产激情一级毛片久久久 | 日韩欧美高清一区 | 亚洲精品国产经典一区二区 | 97在线视频99播放 | 日本免费一区尤物 | 国产系列在线播放 | 久久www免费人成看片入口 | 99久久免费费视频在线观看 | 亚洲光棍天堂 | 男人的天堂久久精品激情 | 黄色录像欧美 | 日韩欧美 在线播放 | 999久久66久6只有精品 | 一亚洲精品一区 | 热久久最新视频 | 国产精品视频男人的天堂 | 伊人天伊人天天网综合视频 | 青青青青手机在线视频观看国产 | 免费精品美女久久久久久久久久 | 五月情视频在线观看 | 国产一区二区三区日韩欧美 | 视频一区色眯眯视频在线 | 亚洲精品日韩中文字幕久久久 | 天天操操操操操操 | 91网红福利精品区一区二 | 日本爱爱免费视频 | 中文字幕在线一区二区三区 | 精品一区 二区三区免费毛片 | 久热这里只有精品在线 | 国产乱肥老妇精品视频 | 成人免费动作大片黄在线 | 亚洲主播在线 | 性夜影院爽黄a爽免费看网站 | 国产精品视频一 | 日日碰狠狠添天天爽爽爽 | 99国产大尺度福利视频 |