Ich habe eine Frage bezüglich der Leistung von SQL Server.T-SQL Einfügen oder Aktualisieren
Angenommen, ich habe eine Tabelle persons
mit den folgenden Spalten: id
, name
, surname
.
Jetzt möchte ich eine neue Zeile in diese Tabelle einfügen. Die Regel ist folgende:
Wenn
id
nicht in der Tabelle vorhanden ist, dann die Zeile einzufügen.Wenn
id
vorhanden ist, aktualisieren Sie.
Ich habe zwei Lösungen hier:
Erstens:
update persons
set [email protected]_id, [email protected]_name, [email protected]_surname
where [email protected]_id
if @@ROWCOUNT = 0
insert into persons(id, name, surname)
values (@p_id, @p_name, @p_surname)
Zweitens:
if exists (select id from persons where id = @p_id)
update persons
set [email protected]_id, [email protected]_name, [email protected]_surname
where [email protected]_id
else
insert into persons(id, name, surname)
values (@p_id, @p_name, @p_surname)
Was ist ein besserer Ansatz? Es scheint, dass in der zweiten Wahl, um eine Zeile zu aktualisieren, muss zweimal gesucht werden, während in der ersten Option - nur einmal. Gibt es andere Lösungen für das Problem? Ich verwende MS SQL 2000.
nicht sicher, aber ich würde nur tun, wenn ((COUNT (*))> 0), dann aktualisieren, für die zweite Option –