ξσ Dicky's Blog σξ

朋友多了,寂寞卻沒少,朋友沒有了你,得到了天下最高的技術又能如何?人類的全部才能無非是時間和耐心的混合物.---巴尔扎克

用户操作
[即时聊天] [发私信] [加为好友]
ξσ Dicky σξID:AppleBBS
972332次访问,排名31,好友33人,关注者55人。
Hello.
AppleBBS的文章
原创 778 篇
翻译 2 篇
转载 54 篇
评论 485 篇
ξσ Dicky σξ的公告
Welcome To My Blog~~Thank U~Wish U Have A Good Time Here~~

Name:Dicky QQ:25941
首页 留言
My QQ:25941,点击这里给偶留言! MSN Online Status Indicator



最近评论
uestcsd:学习了!!!
sap99:www.sap99.com/,SAP99资料多多

SAP免费资料下载
http://www.sap99.com

有很多的学习资料,推荐一下,
zhouxz1026:不错!
蜂胶
蜂蜜
guxia6:喜欢最后一个
qiaogang2003:学习~
文章分类
收藏
相册
My Photo
Others
BBS
ORACLE技术中国用户讨论组
ξσ青苹果论坛σξ(RSS)
Blog
"小灰"的专栏(RSS)
【平凡生活】
CALLCALL'S BLOG(RSS)
CN-Bruce's Blog(RSS)
Goaler Article
Guo's BLOG(RSS)
JAVA之路(RSS)
Jenny's Blog(RSS)
Lovevivi's Blog(RSS)
Netsky's BLOG(RSS)
PuterJam's Blog(RSS)
YuL's Blog(RSS)
ξσ Dicky's Blog σξ(RSS)
中国丫头(RSS)
偶就是天才(RSS)
博客中国(RSS)
嘟嘟老窝(RSS)
平行之恋的BLOG(RSS)
开心不凡之人生有感(RSS)
智在居士草堂(RSS)
椰树下的海
网上地标
花差花差(RSS)
Download
9Down
E维下载
Koders
一起下载网
中国无忧站长
中国活动通信
中文软件资讯站
光点下载
多多软件站
浩瀚软件站
源码中国
華軍軟件園
软件588下载站
Hack & Crack
CrackTeam
KeyGen
Serials & keys
华夏黑客同盟
Movie
22Kan.Com
www.tt21.com
七夕免费电影
好东西免费电影
百看娱乐网
Music
Jx263音乐试听网
今生缘娱乐网
好听音乐网
我爱音乐网
水晶音乐网
百分百音乐网
蓝牙音乐网
要听音乐网
音乐听厅
音乐视听2000
黑胶碟音乐网
Other
200.NET邮件服务器
3126
56.Com
Dicky's Map
Dicky的网摘
E-Mail Icon Generator
GMail
GmailHardDrive.com
Google AdSense
IP Search
MapBar
MSN Web Messenger
QQ任我挂
QQ挂机平台
WEB版图像处理工具
上海城市交通
上海电子地图
上海移动通信
中国工商银行
中国电子简历网
全球最大中国企业库
大众点评网
太平洋电脑网
实用查询
宣传易广告媒体
我摘·网摘·网络书签
我爱打折
搜房按揭综合服务中心
红袖添香
金山词霸在线搜索
Technology
(蓝丽程序员网络
51windows™.Net(RSS)
Eric Liu(RSS)
E路阳光
JoyCode
MSDN Home Page
MSDN 中文网站
MSDN中文网站
New Technol Union(RSS)
专注于.Net
中国WEB开发者网络
中国XML论坛
从零开始
博客园
孟子E章
无忧脚本
横批:不服不行
环球网络
网管之家
蓝色理想
迷失网络
存档
软件项目交易
订阅我的博客
XML聚合  FeedSky
订阅到鲜果
订阅到Google
订阅到抓虾
订阅到BlogLines
订阅到Yahoo
订阅到GouGou
订阅到飞鸽
订阅到Rojo
订阅到newsgator
订阅到netvibes

原创 SQL Server 存储过程的分页方案比拼收藏

新一篇: 有一天,我们能这样相爱吗? | 旧一篇: 一些有用的SQL Server语句和存储过程

转自: http://blog.csdn.net/lihonggen0/archive/2004/09/14/103511.aspx

  1SQL Server 存储过程的分页,这个问题已经讨论过几年了,很多朋友在问我,所以在此发表一下我的观点
  2建立表:
  3
  4CREATE TABLE [TestTable] (
  5 [ID] [int] IDENTITY (11NOT NULL ,
  6 [FirstName] [nvarchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,
  7 [LastName] [nvarchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,
  8 [Country] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
  9 [Note] [nvarchar] (2000) COLLATE Chinese_PRC_CI_AS NULL 
 10ON [PRIMARY]
 11GO
 12
 13 
 14
 15插入数据:(2万条,用更多的数据测试会明显一些)
 16SET IDENTITY_INSERT TestTable ON
 17
 18declare @i int
 19set @i=1
 20while @i<=20000
 21begin
 22    insert into TestTable([id], FirstName, LastName, Country,Note) values(@i'FirstName_XXX','LastName_XXX','Country_XXX','Note_XXX')
 23    set @i=@i+1
 24end
 25
 26SET IDENTITY_INSERT TestTable OFF
 27
 28 
 29
 30-------------------------------------
 31
 32分页方案一:(利用Not In和SELECT TOP分页)
 33语句形式:
 34SELECT TOP 10 *
 35FROM TestTable
 36WHERE (ID NOT IN
 37          (SELECT TOP 20 id
 38         FROM TestTable
 39         ORDER BY id))
 40ORDER BY ID
 41
 42
 43SELECT TOP 页大小 *
 44FROM TestTable
 45WHERE (ID NOT IN
 46          (SELECT TOP 页大小*页数 id
 47         FROM 表
 48         ORDER BY id))
 49ORDER BY ID
 50
 51-------------------------------------
 52
 53分页方案二:(利用ID大于多少和SELECT TOP分页)
 54语句形式:
 55SELECT TOP 10 *
 56FROM TestTable
 57WHERE (ID >
 58          (SELECT MAX(id)
 59         FROM (SELECT TOP 20 id
 60                 FROM TestTable
 61                 ORDER BY id) AS T))
 62ORDER BY ID
 63
 64
 65SELECT TOP 页大小 *
 66FROM TestTable
 67WHERE (ID >
 68          (SELECT MAX(id)
 69         FROM (SELECT TOP 页大小*页数 id
 70                 FROM 表
 71                 ORDER BY id) AS T))
 72ORDER BY ID
 73
 74
 75-------------------------------------
 76
 77分页方案三:(利用SQL的游标存储过程分页)
 78create  procedure XiaoZhengGe
 79@sqlstr nvarchar(4000), --查询字符串
 80@currentpage int--第N页
 81@pagesize int --每页行数
 82as
 83set nocount on
 84declare @P1 int--P1是游标的id
 85 @rowcount int
 86exec sp_cursoropen @P1 output,@sqlstr,@scrollopt=1,@ccopt=1,@rowcount=@rowcount output
 87select ceiling(1.0*@rowcount/@pagesizeas 总页数--,@rowcount as 总行数,@currentpage as 当前页 
 88set @currentpage=(@currentpage-1)*@pagesize+1
 89exec sp_cursorfetch @P1,16,@currentpage,@pagesize 
 90exec sp_cursorclose @P1
 91set nocount off
 92
 93其它的方案:如果没有主键,可以用临时表,也可以用方案三做,但是效率会低。
 94建议优化的时候,加上主键和索引,查询效率会提高。
 95
 96通过SQL 查询分析器,显示比较:我的结论是:
 97分页方案二:(利用ID大于多少和SELECT TOP分页)效率最高,需要拼接SQL语句
 98分页方案一:(利用Not In和SELECT TOP分页)   效率次之,需要拼接SQL语句
 99分页方案三:(利用SQL的游标存储过程分页)    效率最差,但是最为通用
100
101在实际情况中,要具体分析。


更多的讨论见:
http://community.csdn.net/Expert/topic/3292/3292678.xml?temp=.1621515

转自: http://blog.csdn.net/lihonggen0/archive/2004/09/14/103511.aspx

发表于 @ 2005年06月18日 10:36:00|评论(loading...)|编辑

新一篇: 有一天,我们能这样相爱吗? | 旧一篇: 一些有用的SQL Server语句和存储过程

评论

#∮明天去要饭 发表于2005-06-18 19:31:00  IP: 61.186.252.*
我用的是第二种方法,哈哈。
我试过了,100万条数据,速度也很快,不过翻到最后一页后,再点上一页或是下一页,速度就会明显慢很多。
发表评论  


登录
Csdn Blog version 3.1a
Copyright © ξσ Dicky σξ