ROW_NUMBER与IDENTITY和ORDER BY

雅各布·霍布利克(Jacob Horbulyk)

在MS SQL Server中使用ROW_NUMBER和将IDENTITY与ORDER BY语句一起使用是否有任何区别(就结果集,性能或语义而言)?例如,给定一个具有“ FirstName”列的表,两者之间有什么区别

SELECT FirstName, ROW_NUMBER() OVER (ORDER BY FirstName) AS Position
INTO #MyTempTable
FROM MyTable

SELECT FirstName, IDENTITY(BIGINT) AS Position
INTO #MyTempTable
FROM MyTable
ORDER BY FirstName
戈登·利诺夫(Gordon Linoff)

语义上是不同的。第一个示例创建一个具有顺序值的整数列。

第二个示例,使用identity()创建一个标识列。这意味着后续插入将增加。

例如,运行以下代码:

select 'a' as x, identity(int, 1, 1) as id
into #t;

insert into #t(x) values('b');

select *
from #t;

至于处理,这两种情况在您的情况下应该基本相同,因为firstname需要对它们进行排序。如果行更宽,那么如果该row_number()版本在性能上领先于其他版本,我将不会感到惊讶row_number()只有一列进行排序,然后被映射回原始数据。随着identity()整个行需要进行排序。性能上的差异只是出于推测。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

MSSQL - OVER、ROW_NUMBER() 和 ORDER BY 错误

来自分类Dev

而不是 ROW_NUMBER ORDER BY

来自分类Dev

Row_Number 和分区

来自分类Dev

Row_number 和 union

来自分类Dev

Row_number函数和变量

来自分类Dev

SQlite LIMIT和[ROW_NUMBER]

来自分类Dev

替代ROW_NUMBER()OVER(PARTITION BY x ORDER BY z)

来自分类Dev

使用ORDER BY代替PARTION BY row_number()。over()

来自分类Dev

ROW_NUMBER()OVER(ORDER BY(SELECT NULL))是否保留顺序?

来自分类Dev

替代ROW_NUMBER()OVER(PARTITION BY x ORDER BY z)

来自分类Dev

ROW_NUMBER OVER PARTITION BY ORDER BY IN Entity Framework

来自分类Dev

读取row_number

来自分类Dev

ROW_NUMBER 性能

来自分类Dev

distinct和row_number不能一起使用

来自分类Dev

如何使用条件和PARTITION BY制作ROW_NUMBER()函数?

来自分类Dev

sql case语句和等价row_number的SPARK代码

来自分类Dev

ROW_NUMBER()和BigQuery中的数学函数

来自分类Dev

row_number / density_rank(组和岛)

来自分类Dev

SQL row_number() with conditions

来自分类Dev

ROW_NUMBER()基于日期

来自分类Dev

Row_number() that depends on condition

来自分类Dev

PostgreSQL中的Row_number()

来自分类Dev

ROW_NUMBER()基于日期

来自分类Dev

ROW_NUMBER(带参数)

来自分类Dev

ROW_NUMBER()SQL错误

来自分类Dev

访问 - row_number 函数?

来自分类Dev

熊猫:前N行,每组前N行,等效于ROW_NUMBER OVER(PARTITION BY ... ORDER BY ...)

来自分类Dev

具有ORDER BY的MariaDB ROW_NUMBER排序不正确

来自分类Dev

ROW_NUMBER()ORDER BY,不能在同一SELECT语句中使用列