我对 SQL Server 的性能有疑问。
假设我有一个persons
包含以下列的表格:id
, name
, surname
.
现在,我想在这个表中插入一个新行。规则如下:
如果
id
表中不存在,则插入该行。如果
id
存在,则更新。
我这里有两个解决方案:
第一的:
update persons
set id=@p_id, name=@p_name, surname=@p_surname
where id=@p_id
if @@ROWCOUNT = 0
insert into persons(id, name, surname)
values (@p_id, @p_name, @p_surname)
第二:
if exists (select id from persons where id = @p_id)
update persons
set id=@p_id, name=@p_name, surname=@p_surname
where id=@p_id
else
insert into persons(id, name, surname)
values (@p_id, @p_name, @p_surname)
什么是更好的方法?似乎在第二种选择中,要更新一行,必须搜索两次,而在第一种选择中 - 只需一次。有没有其他解决方案?我正在使用 MS SQL 2000。