SqlServer 常用分页方法总结

SqlServer 常用分页方法总结,第1张

概述SqlServer 常用分页方法总结 下面示例总结了,SqlServer数据库 常用分页方法,仅供学习参考 A、 使用 RowNumber 和 Between And 组合分页: /********** 使用 RowNumber 和 Between And 组合分页 **********/CREATE PROC proc_FuzzySearchAndPaging@pageIndex int, 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+'%')  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('%'+@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+'%')   ENDGO


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 分页
SELECT u.* FROM users AS uliMIT ($pIndex-1)*$pSize,$pIndex*$pSize;
@H_403_60@ 总结

以上是内存溢出为你收集整理的SqlServer 常用分页方法总结全部内容,希望文章能够帮你解决SqlServer 常用分页方法总结所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1169716.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存