sqlserver 分页存储过程

本文详细介绍了如何使用SQL进行分页查询,并通过存储过程优化查询效率。包括分页逻辑实现、存储过程创建及测试,适用于数据库管理与查询优化。

--分页
--求  共多少页pageCount   当前页的数据
--已知  1 每页显示几条   pageSize    2 当前页码 pageIndex

select 6/3
select CEILING( 7.0/3)


--第一页    pageSize=3
select * from
(select *,ROW_NUMBER() over(order by ptime desc) as num from photos) as t
where num between 1 and 3 order by  ptime desc
--第二页
select * from
(select *,ROW_NUMBER() over(order by ptime desc) as num from photos) as t
where num between 4 and 6 order by  ptime desc

--第三页
select * from
(select *,ROW_NUMBER() over(order by ptime desc) as num from photos) as t
where num between 7 and 9 order by  ptime desc

--第pageIndex页  pageSize=3
select * from
(select *,ROW_NUMBER() over(order by ptime desc) as num from photos) as t
where num between (pageIndex-1)*pageSize+1 and pageIndex*pageSize order by  ptime desc



--分页的存储过程   
create proc usp_photos
    @pageIndex int,        --当前页码
    @pageSize int,        --页容量
    @pageCount int output  --共多少页 输出参数
as
    declare @count int
    select @count=COUNT(*) from Photos
    set @pageCount = CEILING( @count*1.0/@pageSize)

    select * from
(select *,ROW_NUMBER() over(order by ptime desc) as num from photos) as t
where num between (@pageIndex-1)*@pageSize+1 and @pageIndex*@pageSize order by  ptime desc




--测试存储过程
declare @n int
exec usp_photos 2,2,@n output
print @n

use myphotos    
select * from PhotoType

转载于:https://www.cnblogs.com/eric-gms/p/3464876.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值