当前位置: 代码迷 >> SQL >> SqlServer 惯用分页方法总结
  详细解决方案

SqlServer 惯用分页方法总结

热度:45   发布时间:2016-05-05 11:21:56.0
SqlServer 常用分页方法总结

SqlServer 常用分页方法总结

下面示例总结了,SqlServer数据库 常用分页方法,仅供学习参考

A、 使用 RowNumber 和 Between And 组合分页:

/********** 使用 RowNumber 和 Between And 组合分页 **********/CREATE PROC proc_FuzzySearchAndPaging@pageIndex int,           --页索引@pageSize int,            --页大小@SearchKey Nvarchar(10),  --查询关键字@TotalCount int OutPut    --总数据条数AS  BEGIN       --查询 当前页 数据       SELECT * FROM(           SELECT *,[NO]=ROW_NUMBER() OVER(ORDER BY s.s_id DESC) FROM StuInfo s                  WHERE s.s_name Like('%'[email protected]+'%')       ) t        WHERE t.[NO] BETWEEN @pageSize*(@pageIndex-1)+1 AND @[email protected]       ORDER BY t.s_id DESC              --总数据条数       SELECT @TotalCount = COUNT(*) FROM StuInfo s WHERE s.s_name Like('%'[email protected]+'%')  ENDGO

B、使用 TOP 和 NOT IN 组合分页:

/********** 使用 TOP 和 NOT IN 组合分页 **********/CREATE PROC proc_FuzzySearchAndPaging2@PageIndex int,             --当前页索引@PageSize int,              --每页显示的数据条数@FuzzyKey Nvarchar(20),     --模糊匹配的关键字@Count int OUTPUT           --总数据条数(用来判断要分多少页)AS  BEGIN      SELECT TOP(@PageSize) * FROM StuInfo s			  WHERE s.s_name LIKE('%'[email protected]+'%')			  AND s.s_id NOT IN(			      SELECT TOP((@PageIndex-1)[email protected]) s.s_id FROM StuInfo s			             WHERE s.s_name LIKE('%'[email protected]+'%')			             ORDER BY s.s_id ASC			  )			  ORDER BY s.s_id ASC			       --总数据条数     SELECT @Count=COUNT(*) FROM StuInfo s WHERE s.s_name LIKE('%'[email protected]+'%')   ENDGO

如有,更好方法欢迎拿出来分享!


扩充:分页时,可以充分借助 临时表 和  WITH AS 语句提高查询效率

WITH AS语句示例:

DECLARE @SearchKey Nvarchar(10)  --查询关键字WITH t AS(      SELECT * FROM StuInfo s             WHERE s.s_name Like('%'[email protected]+'%'))


临时表 语句示例:

DECLARE @SearchKey Nvarchar(10)  --查询关键字SELECT * INTO #temp2 FROM (       SELECT * FROM StuInfo s WHERE s.s_name Like('%'[email protected]+'%')) u
  相关解决方案