欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

SQL Server 存儲(chǔ)過程的分頁方案比拼

系統(tǒng) 1903 0

轉(zhuǎn)自: http://blog.csdn.net/lihonggen0/archive/2004/09/14/103511.aspx

1 SQLServer存儲(chǔ)過程的分頁,這個(gè)問題已經(jīng)討論過幾年了,很多朋友在問我,所以在此發(fā)表一下我的觀點(diǎn)
2 建立表:
3
4 CREATE TABLE [ TestTable ] (
5 [ ID ] [ int ] IDENTITY ( 1 , 1 ) NOT NULL ,
6 [ FirstName ] [ nvarchar ] ( 100 )COLLATEChinese_PRC_CI_AS NULL ,
7 [ LastName ] [ nvarchar ] ( 100 )COLLATEChinese_PRC_CI_AS NULL ,
8 [ Country ] [ nvarchar ] ( 50 )COLLATEChinese_PRC_CI_AS NULL ,
9 [ Note ] [ nvarchar ] ( 2000 )COLLATEChinese_PRC_CI_AS NULL
10 ) ON [ PRIMARY ]
11 GO
12
13
14
15 插入數(shù)據(jù):(2萬條,用更多的數(shù)據(jù)測(cè)試會(huì)明顯一些)
16 SET IDENTITY_INSERT TestTable ON
17
18 declare @i int
19 set @i = 1
20 while @i <= 20000
21 begin
22 insert into TestTable( [ id ] ,FirstName,LastName,Country,Note) values ( @i , ' FirstName_XXX ' , ' LastName_XXX ' , ' Country_XXX ' , ' Note_XXX ' )
23 set @i = @i + 1
24 end
25
26 SET IDENTITY_INSERT TestTable OFF
27
28
29
30 -- -----------------------------------
31
32 分頁方案一:(利用NotIn和SELECTTOP分頁)
33 語句形式:
34 SELECT TOP 10 *
35 FROM TestTable
36 WHERE (ID NOT IN
37 ( SELECT TOP 20 id
38 FROM TestTable
39 ORDER BY id))
40 ORDER BY ID
41
42
43 SELECT TOP 頁大小 *
44 FROM TestTable
45 WHERE (ID NOT IN
46 ( SELECT TOP 頁大小 * 頁數(shù)id
47 FROM
48 ORDER BY id))
49 ORDER BY ID
50
51 -- -----------------------------------
52
53 分頁方案二:(利用ID大于多少和SELECTTOP分頁)
54 語句形式:
55 SELECT TOP 10 *
56 FROM TestTable
57 WHERE (ID >
58 ( SELECT MAX (id)
59 FROM ( SELECT TOP 20 id
60 FROM TestTable
61 ORDER BY id) AS T))
62 ORDER BY ID
63
64
65 SELECT TOP 頁大小 *
66 FROM TestTable
67 WHERE (ID >
68 ( SELECT MAX (id)
69 FROM ( SELECT TOP 頁大小 * 頁數(shù)id
70 FROM
71 ORDER BY id) AS T))
72 ORDER BY ID
73
74
75 -- -----------------------------------
76
77 分頁方案三:(利用SQL的游標(biāo)存儲(chǔ)過程分頁)
78 create procedure XiaoZhengGe
79 @sqlstr nvarchar ( 4000 ), -- 查詢字符串
80 @currentpage int , -- 第N頁
81 @pagesize int -- 每頁行數(shù)
82 as
83 set nocount on
84 declare @P1 int , -- P1是游標(biāo)的id
85 @rowcount int
86 exec sp_cursoropen @P1 output, @sqlstr , @scrollopt = 1 , @ccopt = 1 , @rowcount = @rowcount output
87 select ceiling ( 1.0 * @rowcount / @pagesize ) as 總頁數(shù) -- ,@rowcountas總行數(shù),@currentpageas當(dāng)前頁
88 set @currentpage = ( @currentpage - 1 ) * @pagesize + 1
89 exec sp_cursorfetch @P1 , 16 , @currentpage , @pagesize
90 exec sp_cursorclose @P1
91 set nocount off
92
93 其它的方案:如果沒有主鍵,可以用臨時(shí)表,也可以用方案三做,但是效率會(huì)低。
94 建議優(yōu)化的時(shí)候,加上主鍵和索引,查詢效率會(huì)提高。
95
96 通過SQL查詢分析器,顯示比較:我的結(jié)論是:
97 分頁方案二:(利用ID大于多少和SELECTTOP分頁)效率最高,需要拼接SQL語句
98 分頁方案一:(利用NotIn和SELECTTOP分頁)效率次之,需要拼接SQL語句
99 分頁方案三:(利用SQL的游標(biāo)存儲(chǔ)過程分頁)效率最差,但是最為通用
100
101 在實(shí)際情況中,要具體分析。


更多的討論見:
http://community.csdn.net/Expert/topic/3292/3292678.xml?temp=.1621515

轉(zhuǎn)自: http://blog.csdn.net/lihonggen0/archive/2004/09/14/103511.aspx

SQL Server 存儲(chǔ)過程的分頁方案比拼


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

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

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

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

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

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

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 欧美日韩综合视频 | 草草视频免费观看 | 亚洲午夜一区 | 亚洲综合久久伊人热 | 亚洲毛片无码专区亚洲A片 日本高清www午色夜黄 | 精品无码国产一区二区日本 | 一区在线播放 | 色插综合 | 婷婷激情综合五月天 | 欧美电影免费观看 | 国产精品人妻无码久久久2022 | 亚洲视频www | 插插插91| 麻豆专区一区二区三区四区五区 | 欧美在线国产 | 蜜臀在线免费观看 | 亚洲一区二区色情苍井空 | 二级黄绝大片中国免费视频 | 欧美成人午夜剧场 | 精品国产一区二区三区免费 | 免费在线观看的毛片 | 午夜精品久久久久久久星辰影院 | a色在线| 欧洲色综合 | 国产一区日韩精品 | 国产精品激情福利视频 | 国产精品区免费视频 | 亚洲国产日韩欧美在线 | 国产精品v欧美精品v日韩精品 | 国产在视频一区二区三区吞精 | 国产成人综合网在线观看 | 一级毛片视频在线 | 国产免费av在线 | 国产精品爱久久久久久久 | 亚洲区欧美中文字幕久久 | 国产精品久久久天天影视香蕉 | 九九九九精品视频在线播放 | 亚洲高清在线观看 | 久久天天拍天天爱天天躁 | 国产精品成人在线观看 | www.aiqingdao |