SqlServer 经常使用分页方法总结
2017-05-07 12:29
405 查看
SqlServer 经常使用分页方法总结
以下演示样例总结了,SqlServer数据库 经常使用分页方法,仅供学习參考A、 使用 RowNumber 和 Between And 组合分页:
/********** 使用 RowNumber 和 Between And 组合分页 **********/ CREATE PROC proc_FuzzySearchAndPaging @pageIndex int, --页索引 @pageSize int, --页大小 @SearchKey Nvarchar(10), --查询keyword @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), --模糊匹配的keyword @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 DESC ) ORDER BY s.s_id DESC --总数据条数 SELECT @Count=COUNT(*) FROM StuInfo s WHERE s.s_name LIKE('%'+@FuzzyKey+'%') END GO
C、使用 Linq 的 Skip 和 Take 组合分页:
/// <summary> /// 分页 /// </summary> /// <param name="key">查询keyword</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) --查询keyword WITH t AS( SELECT * FROM StuInfo s WHERE s.s_name Like('%'+@SearchKey+'%') )
暂时表 语句演示样例:
DECLARE @SearchKey Nvarchar(10) --查询keyword SELECT * INTO #temp2 FROM ( SELECT * FROM StuInfo s WHERE s.s_name Like('%'+@SearchKey+'%') ) u
MySQL 分页
SELECT u.* FROM users AS u LIMIT ($pIndex-1)*$pSize,$pIndex*$pSize;
相关文章推荐
- SqlServer 常用分页方法总结
- JS经常使用字符串处理方法总结
- 经常遇到询问SQLSERVER中如何实现类似ORC里面的ROWNUM的方法,一般有两种方法,现总结如下
- IOS总结_IOS经常使用的方法集合、调用系统电话、设备区分、APP内永不锁屏
- web报表工具FineReport经常使用函数的使用方法总结(文本函数)
- web报表工具FineReport经常使用函数的使用方法总结(日期和时间函数)
- android toast几种使用方法 toast经常会用到,今天做个总结
- 使用VMWare+SoftICE的方法总结
- 分页显示问题的解决方法(jsp,sqlserver,mysql,oracle)
- Mcad学习笔记之异步编程(AsyncCallback委托,IAsyncResult接口,BeginInvoke方法,EndInvoke方法的使用小总结)
- 总结:ADO.NET在开发中的部分使用方法和技巧 (转贴)
- SqlServer下数据库链接的使用方法
- SqlServer下数据库链接的使用方法
- SqlServer、Oracle中使用分页串.
- 总结:ADO.NET在开发中的部分使用方法和技巧
- DataGrid使用技巧小总结-个性化分页及复杂表头
- DataGrid使用技巧小总结-个性化分页及复杂表头
- 分页显示问题的解决方法(jsp,sqlserver,mysql,oracle)
- DataGrid使用技巧小总结-个性化分页及复杂表头
- SCI软件使用方法总结-定位测量篇