execute(@sql)
select datediff(ms,@timediff,getdate()) as 耗时
set nocount off;
end
4、利用Row_number() 此方法为SQL server 2005中新的方法,利用Row_number()给数据行加上索引
create procedure proc_paged_with_Rownumber --利用SQL 2005中的Row_number()
(
@pageIndex int,
@pageSize int
)
as
declare @timediff datetime
begin
set nocount on;
select @timediff=getdate()
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)
select datediff(ms,@timediff,getdate()) as 耗时
set nocount off;
end5、利用临时表及Row_number
create procedure proc_CTE --利用临时表及Row_number
(
@pageIndex int, --页索引
@pageSize int --页记录数
)
as
set nocount on;
declare @ctestr nvarchar()
declare @strSql nvarchar()
declare @datediff datetime
begin
select @datediff=GetDate()
set @ctestr='with Table_CTE as
(select ceiling((Row_number() over(order by ID ASC))/'+str(@pageSize)+') as page_num,* from tb_TestTable)';
set @strSql=@ctestr+' select * From Table_CTE where page_num='+str(@pageIndex)
end
begin
execute sp_executesql @strSql
select datediff(ms,@datediff,GetDate())
set nocount off;
end以上的五种方法中,网上说第三种利用select top和中间变量的方法是效率最高的。关于SQL Server分页存储过程五种方法及性能比较的全部内容就到此结束了,希望对大家有所帮助。
您可能感兴趣的文章:mssql 高效的分页存储过程分享MSSQL MySQL 数据库分页(存储过程)MsSql 存储过程分页代码 [收集多篇]五种SQL Server分页存储过程的方法及性能比较SQL Server 分页查询通用存储过程(只做分页查询用)sqlserver2005利用临时表和@@RowCount提高分页查询存储过程性能示例分享SQL Server的通用分页存储过程 未使用游标,速度更快!sqlserver 存储过程分页(按多条件排序)MSSQL分页存储过程完整示例(支持多表分页存储)










