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 ...
随机推荐
- IDEA无法编译源码,IDEA查看源码出现/* compiled code */
打开Settings -> Plugins 搜索dec,选中,确定,重启,解决
- 【MyBatis】MyBatis Tomcat JNDI原理及源码分析
一. Tomcat JNDI JNDI(java nameing and drectory interface),是一组在Java应用中访问命名和服务的API,所谓命名服务,即将对象和名称联系起来,使 ...
- ubuntu修改网卡名称ensX为eth0
1.sudo nano /etc/default/grub 找到GRUB_CMDLINE_LINUX="" 改为GRUB_CMDLINE_LINUX="net.ifnam ...
- 笔记本无法从DHCP服务器获取地址怎么解决?
首先,开始/运行,输入 cmd,再输入ipconfig,看看你的IP地址是不是正常的,假如不是,就是获取不到IP地址.如果得到的IP是:169.254.x.x 表示客户机无法得到DHCP的响应.(如果 ...
- JavaScript中函数的定义
JavaScript中函数的定义 制作人:全心全意 在JavaScript中,函数是由关键字function.函数名加一组参数以及置于大括号中需要执行的一段代码定义的.定义函数的基本语法格式如下: f ...
- 2018 GDCPC 省赛总结
第二次参加省赛了,对比上年连STL都不会的acm入门者来说, 今年是接触acm的第二年. 首先要说的是今年的省赛比上年人数多了很多, 闭幕式200多支队伍坐满了整个礼堂还要站着不少人,所以今年的竞争其 ...
- HDU 1087 Super Jumping! Jumping! Jumping! (LIS的最大和)
题意: 给定n个数的序列, 找出最长上升子序列和. 分析: #include<cstdio> #include<iostream> #include<queue> ...
- 7-16 Sort with Swap(0, i)(25 分)
7-16 Sort with Swap(0, i)(25 分) Given any permutation of the numbers {0, 1, 2,..., N−1}, it is easy ...
- ubunt设置终端快捷键设置 及 常用快捷键
Ctrl+A:将光标移动到命令行的开始处. Ctrl+E:将光标移动到命行令的结尾处. Ctrl+U:删除行首到光标出的字符. Ctrl+Z:把当前进程送到后台处理. & bg 部分快 ...
- python 监控oracle 数据库
import cx_Oracle import os db = cx_Oracle.connect('**********') print "Show Oracle Version: &qu ...