网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > SQL技巧
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
本月文章推荐
.带你轻松接触一个可以自动创建过.
.SQL server 2005的简单分页程序 .
.讲解SQL Server 2005数据库表的递.
.数据仓库工程师面试过程中经常遇.
.高级自定义查询、分页、多表联合.
.Win9x平台上SQL Server 2000的性.
.如何提取除最新十条记录之外的所.
.SQL Server SA权限总结经典技术.
.在SQL Server中用XQuery分解XML数.
.一种简单的表中删除重复行的方法 .
.教你在不同数据库环境下读取前N条.
.保持多台服务器数据的一致性.
.利用UltraEdit快速将SQL语句转换.
.Microsoft SQL Server 2005同步复.
.SQL数据库用户只有“名称”而无“.
.实例讲解如何让多进程多线程访问.
.SQL Server数据库简体繁体数据混.
.解决Sql Server警报的疑难问题.
.浅析SQL SERVER一个没有公开的存.
.SQL Server 2005数据库中的Outpu.

SQL Server中利用存储过程来高性能地进行分页

发表日期:2006-3-9


      分页查询的方法已经很多很多,在这里我也加入成为其中一员。
      SQL Server中有一个Set Rowcount的的设置,它的意思是使命令的处理在响应指定的行数之后停止处理命令,利用这个特点,我们可以借用它来在一个千万行级数据表中实现高性能分页查询。先来说说实现方式:
      1、我们来假定Table中有一个已经建立了索引的主键字段ID(整数型),我们将按照这个字段来取数据进行分页。
      2、页的大小我们放在@PageSize中
      3、当前页号我们放在@CurrentPage中
      4、如何让记录指针快速滚动到我们要取的数据开头的那一行呢,这是关键所在!有了Set RowCount,我们就很容易实现了。
      5、如果我们成功地滚动记录指针到我们要取的数据的开头的那一行,然后我们把那一行的记录的ID字段的值记录下来,那么,利用Top和条件,我们就很容易的得到指定页的数据了。当然,有了Set RowCount,我们难道还用Top么?
      看看Set Rowcount怎么来帮我们的忙吧:

Declare @ID int
Declare @MoveRecords int

--@CurrentPage和@PageSize是传入参数
Set @MoveRecords=@CurrentPage * @PageSize+1

--下面两行实现快速滚动到我们要取的数据的行,并把ID记录下来
Set Rowcount @MoveRecords
Select @ID=ID from Table1 Order by ID

Set Rowcount @PageSize
--最恨为了减少麻烦使用*了,但是在这里为了说明方便,暂时用一下
Select * From Table1 Where ID>=@ID Order By ID
Set Rowcount 0
      大家可以试试看,在一个1千W记录的表里面,一下子方翻页到第100页(每页100条),看看有多快!


出处:南疯 BLOG
http://name-lh.cnblogs.com/archive/2006/03/08/346059.html

上一篇:一种通过sql server的作业调度+存储过程来建立自动备份的方法 人气:9181
下一篇:同时安装sql2000和sql2005,经验点滴 人气:12981
浏览全部存储过程的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐