老式分页存储过程
在ASP.Net中的DataGrid控它有内置分页功能,它会把所有的数据从数据库读出来再进行分页,如果数据量很大的时候,默认的分页方式效率是很低的。看看在之前的sql 2000中的我们是什么分页的
create proc [dbo].[page_table]
(
@pageNo int, --当前页数值,最小为1,表示第一页
@pageSize int, --每页显示条数
@PageCount int out,--获取总页数
)
as
set nocount on --使返回的结果中不包含有关受 Transact-SQL 语句影响的行数的信息。
declare @start int,@itemscount int
--获取总页数
select @PageCount =CEILING( (count(ID)+0.0)/@PageSize)
FROM 表
where 条件
--分页
if(@pageNo<>1) //是否为第一页
begin
set @itemscount=(@pageNo-1)*@pageSize+1
set rowcount @itemscount
SELECT @start = ID
FROM 表
where 条件
order by ID desc
set rowcount @pageSize // 取每页显示条数
SELECT 查询所须字段
FROM 表
where id>= @start and 其它条件 // id>= @itemscount
order by ID desc
end
else //第一页查询
begin
set rowcount @pageSize // 取每页显示条数
SELECT 查询所须字段
FROM 表
where 条件
order by ID desc
end
set rowcount 0
这样的话一次只取“每页显示条数” 大大提高了效率