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

时间:2015-12-10 18:56:32

标签: sql-server sql-server-2014

我在插入大量值时数据库性能不佳。 在插入之前,我必须检查该值是否已经存在并获取其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

有没有更好的方法来执行此操作?

1 个答案:

答案 0 :(得分:2)

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

但是,当你可以打一次时,你正在查询表两次。伪代码:

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 ...