SQL Server存储过程分页

上一篇里面,介绍了一些提升sql server运行效率的小技巧。 SQL性能优化的几个技巧
里面提到了存储过程分页,但是并没有详细介绍。这一篇,用以前的项目代码为例,介绍存储过程分页。存储过程的高效率,主要是因为预编译,也稍微节省了服务器到数据库之间的数据长度。
默认情况下,存储过程会重用已缓存的执行计划,节省了分析、解析和优化代码所需要的CPU资源和时间。我这个项目,由于逻辑并没有那么复杂,所以存储过程和直接用sql语句分页,提升的效果不是很多。
首先是一个没有检索条件的分页
`create proc usp_Page
@PageIndex int=null,
@PageSize int=null
as if @PageIndex is null
BEGIN
SET @PageIndex=1
END
if @PageSize is null
BEGIN
SET @PageSize=20
END
select * from (select ROW_NUMBER() over(order by Info_ID asc) as ‘rowNumber’, * from InfoList
) as temp where rowNumber between (( @PageIndex - 1) * @PageSize +1) and (@PageIndex*@PageSize)
GO

EXEC usp_Page `
下面的是带查询条件的分页,加上查询条件,存储过程分页的性能优势体现的就更明显些。

USE InfoSearch114
GO
IF EXISTS(SELECT * FROM sysobjects WHERE name='usp_Page')
DROP PROC usp_Page
GO

create proc usp_Page 
@lastPageSize int, 
@endPageSize int,
@condition  nvarchar(500) 
as
select * from (select ROW_NUMBER() over(order by Info_ID asc) as 'rowNumber', * from InfoList "@condition"
) as temp where rowNumber between @lastPageSize and @endPageSize
GO

创建完成,之后执行查询
EXEC usp_Page 10001,10020, “WHERE Info_Industry LIKE ‘%中%’ AND Info_Phone LIKE ‘%%’ AND Info_OrganizName LIKE ‘%%’ AND Info_Address LIKE ‘%%’”
下面是查询结果
查询结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值