从 Microsoft Sql 获取 Id 或插入值的最快方法

Fastest way to get Id or insert value from Microsoft Sql

我在插入大量值时数据库性能不佳。 在插入之前,我必须检查该值是否已经存在,如果存在则获取它的 Id,就像在这个查询中一样:

DECLARE @p0 int
DECLARE @p1 VARCHAR(255)

SET @p0 = 1
SET @p1 = '123123123123'

IF NOT EXISTS(SELECT TOP (1) Id 
           FROM Orders 
           WHERE MyId = @p0 AND Number = @p1) 
BEGIN       
   INSERT Orders (MyId, Number) VALUES  (@p0, @p1) 
END 
SELECT TOP (1) Id FROM Orders WHERE MyId = @p0 AND Number = @p1

有没有更好的操作方式?

table 上的正确索引应该很快(根据上面的评论),所以首先解决这个问题。

但是,您正在查询 table 两次,而您可能可以点击一次。伪代码:

declare @id int 

select @id = id FROM Orders WHERE MyId = @p0 AND Number = @p1

if ( @id is null )
begin

insert into ....

set @id = scope_identity()

end

select @id ...