SqlServer 经常使用分页方法总结
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 经常使用分页方法总结的更多相关文章
- sqlserver两种分页方法比较
-- 3000 page(从1开始) 10 pagesize -- 方法1(效率不高): SELECT TOP 10 * FROM [xxx].[oooo] WHERE id NOT IN (SELE ...
- EFCore中SQLSERVER 2008 的分页问题
自SQLSERVER 2012起新增了 Offset Fetch 语法,因此EFCore默认是以此语法生成相应的分页语句的. 如果我们的目标数据库低于 2012,那么EFCore默认生成的语句在执行的 ...
- SQLServer转MYSQL的方法(连数据)[传]
转自 https://blog.csdn.net/AlbenXie/article/details/77449720 SQLServer转MYSQL的方法(连数据) 本次转换需要依赖使用工具Navic ...
- sqlserver三种分页方式性能比较
Liwu_Items表,CreateTime列建立聚集索引 第一种,sqlserver2005特有的分页语法 declare @page intdeclare @pagesize intset @pa ...
- SQL Server游标 C# DataTable.Select() 筛选数据 什么是SQL游标? SQL Server数据类型转换方法 LinQ是什么? SQL Server 分页方法汇总
SQL Server游标 转载自:http://www.cnblogs.com/knowledgesea/p/3699851.html. 什么是游标 结果集,结果集就是select查询之后返回的所 ...
- Oracle、SQL Server、MySQL分页方法
测试用例:查询TEST_TABLE表中TEST_COLUMN列的第10-20条数据 1,Oracle分页方法 SELECT A.* FROM ( SELECT ROWNUM ROWNO, B.* FR ...
- Sql Server 2012 的新分页方法分析(offset and fetch) - 转载
最近在分析 Sql Server 2012 中 offset and fetch 的新特性,发现 offset and fetch 无论语法的简洁还是功能的强大,都是相当相当不错的 其中 offset ...
- phalcon几种分页方法
phalcon几种分页方法 一: use Phalcon\Paginator\Adapter\Model as PaginatorModel; // Current page to show // I ...
- 只是一个用EF写的一个简单的分页方法而已
只是一个用EF写的一个简单的分页方法而已 慢慢的写吧.比如,第一步,先把所有数据查询出来吧. //第一步. public IQueryable<UserInfo> LoadPagesFor ...
随机推荐
- 定位 absolute和relative比较
absolute:脱离原来位置定位.是相对于最近的有定位的父级进行定位;如果没有有定位的父级元素,就相对文档进行定位 relative:保留原来位置进行定位,相对于自己原来的位置进行定位 下面举两个例 ...
- [CF] 219D Choosing Capital for Treeland
题意翻译 题目描述 Treeland国有n个城市,这n个城市连成了一颗树,有n-1条道路连接了所有城市.每条道路只能单向通行.现在政府需要决定选择哪个城市为首都.假如城市i成为了首都,那么为了使首都能 ...
- Linux vim指令学习
每天查看一遍vim文档 Linux系统下命令:$ vimtutor 1.可视模式([v] 或者 [Ctrl + v])下的[U]把选中的文本变为大写 .[u]把选中的文本变为小写. 2.[数字] + ...
- ps指令详解
ps aux #显示出系统上的全部进程ps -ef #显示出系统上的全部进程,且显示出PPID一栏ps -ljF #仅显示与本终端上开启的进程 选项:-t 终端名称1 终端名称2 #指定关联的多个终端 ...
- 二手GTX650
某鱼入手一二手华硕显卡GTX650 店主信誉挺高的,到手图片 我K,被骗了翻新的假显卡,华硕没有过这个样式的GTX650啊,还是新的散热风扇及前挡板,不管了先把风扇拆了,竟然连风扇散热硅脂都是刚刚涂上 ...
- HTML5结构
1.显示编排内容区域块(明确使用section等元素创建文档结构,在每个区域块中使用标题元素) 2.隐示编排内容区域块(不明确使用section等元素,而是根据网页需求来将各级的元素创建出来) 3.标 ...
- Hibernate入门(1)——环境搭建
什么是Hibernate?为什么使用Hibernate?Hibernate有什么优缺点?网上很多大神的文章又详细又通俗易懂. 步骤: 1.创建数据库表格. 2.编写JavaBean实体类. 3.下载H ...
- Task(TPL)简单的实现Winform(WPF)异步
很多时候,我们要实现Winform异步操作,你可以用传统的方法,但个人感觉代码不好理解,而且使用真有点不舒服.也可以用Task来实现,Task(.net4.0新添加的对象)其实就是对线程池线程的一个封 ...
- zoj 2109 FatMouse' Trade
FatMouse' Trade Time Limit: 2 Seconds Memory Limit: 65536 KB FatMouse prepared M pounds of cat ...
- PTA 01-复杂度2 Maximum Subsequence Sum (25分)
题目地址 https://pta.patest.cn/pta/test/16/exam/4/question/663 5-1 Maximum Subsequence Sum (25分) Given ...