gpt4 book ai didi

sql - ROW_NUMBER 与 IDENTITY 和 ORDER BY

转载 作者:行者123 更新时间:2023-12-02 20:36:51 25 4
gpt4 key购买 nike

在 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

最佳答案

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

第二个示例使用 identity() 创建一个 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()需要对整行进行排序。这种性能差异只是有根据的推测。

关于sql - ROW_NUMBER 与 IDENTITY 和 ORDER BY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38575021/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com