- Rongsen.Com.Cn 版权所有 2008-2010 京ICP备08007000号 京公海网安备11010802026356号 朝阳网安编号:110105199号
- 北京黑客防线网安工作室-黑客防线网安服务器维护基地为您提供专业的
服务器维护
,企业网站维护
,网站维护
服务 - (建议采用1024×768分辨率,以达到最佳视觉效果) Powered by 黑客防线网安 ©2009-2010 www.rongsen.com.cn
作者:黑客防线网安SQL维护基地 来源:黑客防线网安SQL维护基地 浏览次数:0 |
在Sql Server 2005中,我们可以利用新增函数row_number()来更高效的实现分页存储
CREATE PROCEDURE p_GetStudentInfo
@PageSize INT,
@PageIndex INT,
@strWhere varchar(1500) -- 查询条件(注意: 不要加where)
As
Begin
select * from (
select row_number() over (order by StudentInfoId) row,* from StudentInfo ) StudentInfo
where row between @PageSize*(@PageIndex-1) and @PageSize*@PageIndex
End
go
依照群组显示每条记录在该群组中出现的顺序位置,在显示每条记录编号时非常有用,并且搭配OVER子句,这样就可以实现查询记录的条数了。
我们现在来比较一下它们执行的性能,StudentInfo表中现在有30多万条数据,我们分别来执行下面的存储过程:
Exec p_GetStudentInfo
@PageSize = 10000,
@PageIndex = 10,
@strWhere = '1=1'
在Sql Server 2000中,执行的时间是接近2秒;
在Sql Server 2005中,执行的时间显示的是接近0秒。
如果数据涉及到千万级的数据时,比较上面两种方法,就可以看到一些显著的差别了。
我要申请本站:N点 | 黑客防线官网 | |
专业服务器维护及网站维护手工安全搭建环境,网站安全加固服务。黑客防线网安服务器维护基地招商进行中!QQ:29769479 |