SqlServer 常用分页方法总结
发布时间:2020-12-12 13:16:58 所属栏目:MsSql教程 来源:网络整理
导读:SqlServer 常用分页方法总结 下面示例总结了,SqlServer数据库?常用分页方法,仅供学习参考 A、?使用 RowNumber 和 Between And 组合分页: /********** 使用 RowNumber 和 Between And 组合分页 **********/CREATE PROC proc_FuzzySearchAndPaging@pageIndex
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('%'+@SearchKey+'%') ) t WHERE t.[NO] BETWEEN @pageSize*(@pageIndex-1)+1 AND @pageIndex*@pageSize ORDER BY t.s_id DESC --总数据条数 SELECT @TotalCount = COUNT(*) FROM StuInfo s WHERE s.s_name Like('%'+@SearchKey+'%') END GO 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('%'+@FuzzyKey+'%') AND s.s_id NOT IN( SELECT TOP((@PageIndex-1)*@PageSize) s.s_id FROM StuInfo s WHERE s.s_name LIKE('%'+@FuzzyKey+'%') ORDER BY s.s_id ASC ) ORDER BY s.s_id ASC --总数据条数 SELECT @Count=COUNT(*) FROM StuInfo s WHERE s.s_name LIKE('%'+@FuzzyKey+'%') END GO C、使用 Linq 的?Skip 和?Take 组合分页:/// <summary> ? ? ? ? /// 分页 ? ? ? ? /// </summary> ? ? ? ? /// <param name="key">查询关键字</param> ? ? ? ? /// <param name="pageIndex">页索引</param> ? ? ? ? /// <param name="pageSize">页大小</param> ? ? ? ? /// <param name="pageCount">总页数</param> ? ? ? ? /// <returns></returns> ? ? ? ? public IList<EA_Script> FuzzyPaging(String key,int pageIndex,int pageSize,ref int pageCount) ? ? ? ? { ? ? ? ? ? ? var query = from e in dc.EA_Script ? ? ? ? ? ? ? ? ? ? ? ? where e.FName.Contains(key) ? ? ? ? ? ? ? ? ? ? ? ? orderby e.Id descending ? ? ? ? ? ? ? ? ? ? ? ? select e; ? ? ? ? ? ? //总页数 ? ? ? ? ? ? pageCount = query.Count() % pageSize == 0 ? ? ? ? ? ? ? ? ? (query.Count() % pageSize) : query.Count() / pageSize + 1; ? ? ? ? ? ? return query.Skip(pageIndex - 1).Take(pageSize).ToList(); ? ? ? ? } 如有,更好方法欢迎拿出来分享! 扩充:分页时,可以充分借助 临时表 和 ?WITH AS 语句提高查询效率 WITH AS语句示例:DECLARE @SearchKey Nvarchar(10) --查询关键字 WITH t AS( SELECT * FROM StuInfo s WHERE s.s_name Like('%'+@SearchKey+'%') ) 临时表 语句示例:DECLARE @SearchKey Nvarchar(10) --查询关键字 SELECT * INTO #temp2 FROM ( SELECT * FROM StuInfo s WHERE s.s_name Like('%'+@SearchKey+'%') ) u MySQL 分页
|