gpt4 book ai didi

sql - 返回主键值的最快方法 SQL Server 2005

转载 作者:行者123 更新时间:2023-12-04 23:45:48 25 4
gpt4 key购买 nike

我有一个带有主键 (int) 和唯一值 (nvarchar(255)) 的两列表

当我向这个表插入一个值时,我可以使用 Scope_identity() 来返回我刚刚插入的值的主键。但是,如果该值已经存在,我必须执行额外的选择以返回主键以进行后续操作(将该主键插入到第二个表中)

我认为必须有更好的方法来做到这一点 - 我考虑过使用覆盖索引,但该表只有两列,我在覆盖索引上阅读的大部分内容表明它们仅在表明显大于索引的情况下提供帮助.

有没有更快的方法来做到这一点?即使覆盖索引与表的大小相同,它也会更快吗?

最佳答案

构建索引不会给您带来任何好处,因为您已经将值列创建为唯一的(在后台构建索引)。实际上,全表扫描与您的场景中的索引扫描没有什么不同。

我假设您想要一种 insert-if-not-already-existsts 行为。没有办法绕过第二个选择

if not exists (select ID from where name = @...)
insert into ...
select SCOPE_IDENTITY()
else
(select ID from where name = @...)

如果该值恰好存在,则查询通常已被缓存,因此第二个 ID 选择应该不会有性能影响。

关于sql - 返回主键值的最快方法 SQL Server 2005,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2325443/

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