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 ...
随机推荐
- CPP-STL:list容器
本文以List容器为例子,介绍了STL的基本内容,从容器到迭代器,再到普通函数,而且例子丰富,通俗易懂.不失为STL的入门文章,新手不容错过! 目录 1 定义一个list 2 使用list的成员函数p ...
- 天梯赛L1 题解
L1-001 Hello World (5 分) 这道超级简单的题目没有任何输入. 你只需要在一行中输出著名短句“Hello World!”就可以了. AC代码:(直接输出记性) #include & ...
- java反编译工具jad
下好以后解压就可以用了,软件就只有一个exe文件和一个帮助文件.在众多的JAVA反编译工具中,有几种非常著名的工具使用了相同的核心引擎——JAD,其中主要包括:FrontEnd Plus.mDeJav ...
- 28. TRIGGERS ,29. USER_PRIVILEGES,30. VIEWS
28. TRIGGERS TRIGGERS表提供有关触发器的信息.要查看有关表的触发器的信息,您必须具有该表的TRIGGER权限. TRIGGERS表有以下列: TRIGGER_CATALOG :触发 ...
- Go:sync.Once 实现单例模式
代码: package main import ( "fmt" "sync" ) type Singleton struct{} var singleton * ...
- 让自己习惯C++
条款1.C++是一个语言联邦 过程形式(procedural) 面向对象形式(object-oriented) 函数形式(function) 泛型形式(generic) 元编程形式(metaprogr ...
- laravel 集成 swagger插件
原文链接:https://medium.com/@mahbubkabir/discovering-swagger-in-laravel-rest-apis-cb0271c8f2 1.composer ...
- Python之队列
Python之队列 队列:先进先出 队列与线程有关. 在多线程编程时,会起到作用. 作用:确保信息安全的进行交换. 有get 和 put 方法. ''' 创建一个“队列”对象 import Queue ...
- 由Java实现Valid Parentheses
一.题目 Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the ...
- Python爬虫-Scrapy-CrawlSpider与ItemLoader
一.CrawlSpider 根据官方文档可以了解到, 虽然对于特定的网页来说不一定是最好的选择, 但是 CrwalSpider 是爬取规整的网页时最常用的 spider, 而且有很好的可塑性. 除了继 ...