SQL Server のパフォーマンスについて質問があります。
persons
次の列を持つテーブルがあるとします: id
、name
、surname
。
ここで、このテーブルに新しい行を挿入したいと思います。ルールは次のとおりです。
がテーブルに存在しない場合
id
は、行を挿入します。存在する場合
id
は、更新します。
ここには2つの解決策があります:
初め:
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)
2番:
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)
より良いアプローチは何ですか?2 番目の選択肢では、行を更新するには 2 回検索する必要があるようですが、最初の選択肢では 1 回だけです。問題に対する他の解決策はありますか?MS SQL 2000 を使用しています。