У меня возник вопрос о производительности SQL Server.T-SQL Вставка или обновление
Предположим, у меня есть таблица persons
со следующими столбцами: id
, name
, surname
.
Теперь я хочу вставить новую строку в эту таблицу. Правило заключается в следующем:
Если
id
нет в таблице, а затем вставить строку.Если есть
id
, то обновите.
У меня есть два решения здесь:
Первый:
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)
Второй:
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)
Что такое лучший подход? Кажется, что во втором варианте, чтобы обновить строку, ее нужно искать два раза, тогда как в первом варианте - только один раз. Есть ли другие решения проблемы? Я использую MS SQL 2000.
не уверен, но я бы просто сделать, если ((COUNT (*))> 0), то обновление для второго варианта –