SQL Server的三种分页方式

直接上代码

 1  --top not in方式
 2 select top 条数 *  from tablename
 3 where Id not in (select top 条数*页数  Id from tablename)
 4
 5
 6
 7 --ROW_NUMBER() OVER()方式
 8  select * from (
 9     select *, ROW_NUMBER() OVER(Order by Id ) AS RowNumber from tablename
10   ) as b
11   where RowNumber BETWEEN 当前页数-1*条数 and 页数*条数
12
13
14
15 --offset fetch next方式
16 --SQL2012以上的版本才支持
17 select * from tablename
18  order by Id offset 页数 row fetch next 条数 row only   

在讨论性能之前,首先需要明确的是,我们在编写SQL语句的时候,尽量要减少不必要字段的输出,文中出于演示,所以都用的*,在实际中不要这样!!还有就是要根据业务逻辑,比如查询条件,建立合适的聚合索引和非聚合索引,索引对于查找的效率影响非常大,SQL中的索引其实就是建立某种平衡查找树

以上是对sql分页的一点总结,希望对您有所帮助。

时间: 2024-10-08 07:59:34

SQL Server的三种分页方式的相关文章

SQL Server 中的三种分页方式

USE tempdb GO SET NOCOUNT ON --创建表结构 IF OBJECT_ID(N'ClassB', N'U') IS NOT NULL DROP TABLE ClassB GO CREATE TABLE ClassB(ID INT PRIMARY KEY, Name VARCHAR(16), CreateDate DATETIME, AID INT, Status INT) CREATE INDEX IDX_CreateDate ON ClassB(CreateDate)

Asp.Net中的三种分页方式总结

本人ASP.net初学,网上找了一些分页的资料,看到这篇文章,没看到作者在名字,我转了你的文章,只为我可以用的时候方便查看,2010的文章了,不知道这技术是否过期. 以下才是正文 通常分页有3种方法,分别是asp.net自带的数据显示空间如GridView等自带的分页,第三方分页控件如aspnetpager,存储过程分页等.这里分别做总结. 第一种:使用GridView自带分页,这种是最简单的分页方法. 前台的方法: <asp:GridView ID="GridView1" Al

Sql Server中三种字符串合并方法的性能比较

最近正在处理一个合并字符吕的存储过程,在一个测试系统的开发中,要使用到字符串合并功能,直接在Sql中做.        示例:        有表內容﹕        名称  內容         1     abc        1      aaa        1      dddd        2      1223        2       fkdjfd           --------------------------------        结果﹕        1 

SQL SERVER数据库 三种 恢复模式

SQL SERVER 2005 以后三种恢复模式: 简单(Sample),完全(Full),大批量(Bulk_Logged) 完全备份模型 完全备份模式是指在出现数据文件毁坏时丢失数据的风险最小.如果一个数据库在此模式下是,所有操作都会被完全记录下来,这意味着记录使用INSERT操作增加的每一行,使用DELETE操作删除的每一行和使用UPDATE操作修改的每一行,SQL server还会将使用BCP和BULK insert 操作插入的每一行完全被记录到事物日志中.如果遇到一个数据库备份之后一直在

SQLServer2000到SQLServer2012三种分页方式比较

SQLSERVER2012 出新分页功能啦!!!近两天我在自己工作机的PC(没有并发,单一线程)上做了SqlServer  2000/ (2005/2008)/2012三个版本下的分页性能比较. 大致可得出以下结果:1.表数据量200W以内:SQLServer2012 的offset/fetch分页性能和SQLServer2005 Row_number的分页性能(仅考虑出结果速度)基本没区别(难分高下),略高于(大约10%)SQL2000的TOP分页性能.2.表数据量2000W左右:SQLSer

Spark SQL join的三种实现方式

引言 join是SQL中的常用操作,良好的表结构能够将数据分散到不同的表中,使其符合某种规范(mysql三大范式),可以最大程度的减少数据冗余,更新容错等,而建立表和表之间关系的最佳方式就是join操作. 对于Spark来说有3种Join的实现,每种Join对应的不同的应用场景(SparkSQL自动决策使用哪种实现范式): 1.Broadcast Hash Join:适合一张很小的表和一张大表进行Join: 2.Shuffle Hash Join:适合一张小表(比上一个大一点)和一张大表进行Jo

SQL Server的三种物理连接之Hash Join(三)

简介 在 SQL Server 2012 在一些特殊的例子下会看到下面的图标: Hash Join分为两个阶段,分别为生成和探测阶段. 首先是生成阶段,将输入源中的每一个条目经过散列函数的计算都放到不同的Hash Bucket中,其中Hash Function的选择和Hash Bucket的数量都是黑盒,通常来讲,查询优化器都会使用连接两端中比较小的哪个输入集来作为第一阶段的输入源. 接下来是探测阶段,对于另一个输入集合,同样针对每一行进行散列函数,确定其所应在的Hash Bucket,在针对这

Elasticsearch 三种分页方式

from + size 浅分页 "浅"分页可以理解为简单意义上的分页.它的原理很简单,就是查询前20条数据,然后截断前10条,只返回10-20的数据.这样其实白白浪费了前10条的查询. GET test_dev/_search { "query": { "bool": { "filter": [ { "term": { "age": 28 } } ] } }, "size&qu

SQL Server中几种遍历方式比较

SQL遍历解析 在SQL的存储过程,函数中,经常需要使用遍历(遍历table),其中游标.临时表等遍历方法很常用.面对小数据量,这几种遍历方法均可行,但是面临大数据量时,就需要择优选择,不同的遍历方法,在效率上存在指数级别的差异 本文列举了常用的3中遍历方法:游标.临时表.索引表,重点分析其效率. 本文主要针对大量数据的遍历,当数据量小时:可以随意选择一种遍历方法. 实例数据如下:一共177471条数据 1.游标遍历 游标的遍历 2. 22 3. 33 原文地址:https://www.cnbl