SQL Server 中ROW_NUMBER() OVER基本用法
1、不能排序法
SELECT TOP 10 *
FROM table1
WHERE id NOT IN (
SELECT TOP 开始的位置 id
FROM table1
)
2、SQL 2000 临时表法
DECLARE @Start INT
DECLARE @End INT
SELECT @Start = 14000, @End = 14050 CREATE TABLE #employees (
RowNumber INT IDENTITY (1, 1),
LastName VARCHAR(100),
FirstName VARCHAR(100),
EmailAddress VARCHAR(100)
) INSERT INTO #employees (LastName, FirstName, EmailAddress)
SELECT LastName, FirstName, EmailAddress
FROM Employee
ORDER BY LastName, FirstName, EmailAddress
SELECT LastName, FirstName, EmailAddress
FROM #employees
WHERE RowNumber > @Start
AND RowNumber <= @End DROP TABLE #employees
3、SQL 2005/2008 Row_Number法
DECLARE @Start INT
DECLARE @End INT
SELECT @Start = 14000, @End = 14050 SELECT LastName, FirstName, EmailAddress
FROM (
SELECT LastName, FirstName, EmailAddress, ROW_NUMBER() OVER (ORDER BY LastName, FirstName, EmailAddress) AS RowNumber
FROM Employee
) EmployeePage
WHERE RowNumber > @Start
AND RowNumber <= @End
ORDER BY LastName, FirstName, EmailAddress
GO
4、SQL SERVER 2012以后 OFFSET/FETCH NEXT法
SELECT LastName, FirstName, EmailAddress
FROM Employee
ORDER BY LastName, FirstName, EmailAddress
OFFSET 14000 ROWS FETCH NEXT 50 ROWS ONLY;
语法说明:
ORDER BY ORDER_BY_EXPRESSION
[ COLLATE COLLATION_NAME ]
[ ASC | DESC ]
[ ,...N ]
[ <OFFSET_FETCH> ] <OFFSET_FETCH> ::=
{
OFFSET { INTEGER_CONSTANT | OFFSET_ROW_COUNT_EXPRESSION } { ROW | ROWS }
[
FETCH { FIRST | NEXT } {INTEGER_CONSTANT | FETCH_ROW_COUNT_EXPRESSION } { ROW | ROWS } ONLY
]
} --FIRST 和 NEXT 是同义词,是为了与 ANSI 兼容而提供的。
--ROW 和 ROWS 是同义词,是为了与 ANSI 兼容而提供的。
对比分析:
|
|
1~100行 |
5001~5100行 |
9900~10000行 |
估计行数 |
OFFSET FETCH |
开销占比 |
49% |
84% |
90% |
100 |
ROW_NUMBER |
开销占比 |
51% |
16% |
10% |
9 |
ROW_NUMBER 在 编译内存,CPU 比 OFFSET FETCH 多。
上面统计中:OFFSET FETCH 查询的记录在表中越靠后,开销反而更大,而这个的估计行数是准确的。
SQL Server 中ROW_NUMBER() OVER基本用法的更多相关文章
- SQL Server中bcp命令的用法以及数据批量导入导出
原文:SQL Server中bcp命令的用法以及数据批量导入导出 1.bcp命令参数解析 bcp命令有许多参数,下面给出bcp命令参数的简要解析 用法: bcp {dbtable | query} { ...
- sql server中quotename()函数的用法(转载)
操作sql server尤其是写存储过程时,要用到各种各样的函数,今天就总结一个quotename()的用法.1.语法: quotename('character_string'[,'quote_ch ...
- sql server中QUOTENAME()函数的用法
操作sql server尤其是写存储过程时,要用到各种各样的函数,今天就总结一个quotename()的用法. 1.语法: quotename('character_string'[,'quote_c ...
- SQL Server中COALESCE函数的用法
在SQL Server中COALESCE函数,会返回其参数中第一个不为NULL的参数,效果如下: SELECT COALESCE(NULL,NULL,N'A',NULL,NULL) 结果: SELEC ...
- SQL Server中row_number函数的简单用法
一.SQL Server Row_number函数简介 ROW_NUMBER()是一个Window函数,它为结果集的分区中的每一行分配一个连续的整数. 行号以每个分区中第一行的行号开头. 以下是R ...
- SQL Server中row_number的用法
ROW_NUMBER()函数将针对SELECT语句返回的每一行,从1开始编号,赋予其连续的编号.在查询时应用了一个排序标准后,只有通过编号才能够保证其顺序是一致的,当使用ROW_NUMBER函数时,也 ...
- sql server中case when的用法
Case具有两种格式.简单Case函数和Case搜索函数. --简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END ...
- sql server 中的分区函数用法(partition by 字段)
partition by关键字是分析性函数的一部分,它和聚合函数不同的地方在于它能返回一个分组中的多条记录,而聚合函数一般只有一条反映统计值的记录,partition by用于给结果集分组,如果没 ...
- sql server中的charindex函数用法解析(在一段字符中搜索字符或者字符串-----返回expression1在expression2出现的位置;反之,返回0)
https://blog.csdn.net/xinghuo0007/article/details/70651358 知识点一:charindex()语法 CHARINDEX ( expression ...
随机推荐
- Bluedroid协议栈BTU线程处理HCI数据流程分析
在蓝牙enable的过程中会进行多个线程的创建以及将线程与队列进行绑定的工作.该篇文章主要分析一下处理hci数据这个 线程. void BTU_StartUp(void) { ... btu_bta_ ...
- ubuntu set/unset proxy
export http_proxy export https_proxy unset http_proxy unset https_proxy
- centos7 源码部署LNMP
一.环境 系统环境:centos 7.4 64位 Nginx:1.7.9 MySQL: 5.7.20 (二进制包) PHP:5.6.37 二.Ngin 安装 Nginx部署 yum install ...
- 重温httpsession①
Session—HTTPSession 服务器创建的,Javaweb提供的 与HTTP协议无关是服务器端对象,保存在服务器端.用来会话跟踪. Cookie与服务器创建,与HTTP协议相关,保存在客户端 ...
- 软件工程之四则运算--Github
由于现在配置问题,然后借用同学电脑将代码上传至Github,网址为:https://github.com/be821/RealFour 参考相关Github文档: 1. http://my.oschi ...
- 第二个Sprint冲刺第六天(燃尽图)补
- beta3
吴晓晖(组长) 过去两天完成了哪些任务 一些细节的debug,部分优化,算法中有关记录的部分 展示GitHub当日代码/文档签入记录 接下来的计划 推荐算法 还剩下哪些任务 组员:刘帅珍 过去两天完成 ...
- OVS流表table之间的跳转
OVS流表table之间的跳转 前言 今天在帮学弟解决问题的时候,遇到一个table0.table1之间的微妙小插曲,引起了注意,后来查了一下资料发现原因了. 问题描述 wpq@wpq:~$ sudo ...
- Spark 实践——音乐推荐和 Audioscrobbler 数据集
本文基于<Spark 高级数据分析>第3章 用音乐推荐和Audioscrobbler数据 完整代码见 https://github.com/libaoquan95/aasPractice/ ...
- [2017BUAA软工]结对项目-数独程序扩展
零.github地址 GitHub地址:https://github.com/Liu-SD/SudoCmd (这个地址是命令行模式数独的仓库,包含了用作测试的BIN.DLL核心计算模块地址是:http ...