Tengo una pregunta sobre el rendimiento de SQL Server.T-SQL Insertar o actualizar
Supongamos que tengo una tabla persons
con las siguientes columnas: id
, name
, surname
.
Ahora, quiero insertar una nueva fila en esta tabla. La regla es la siguiente:
Si
id
no está presente en la tabla, a continuación, insertar la fila.Si
id
está presente, entonces actualícela.
tengo dos soluciones aquí:
Primero:
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)
Segundo:
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)
¿Cuál es el mejor enfoque? Parece que en la segunda opción, para actualizar una fila, debe buscarse dos veces, mientras que en la primera opción, solo una vez. ¿Hay alguna otra solución al problema? Estoy usando MS SQL 2000.
no estoy seguro, pero me gustaría hacer un if ((COUNT (*))> 0) y luego actualizar por la segunda opción –