Insertar la actualización almacenada proc en SQL Server

He escrito un proceso almacenado que hará una actualización si existe un registro, de lo contrario hará una inserción. Se ve algo como esto:

update myTable set Col1=@col1, Col2=@col2 where ID=@ID
if @@rowcount = 0
insert into myTable (Col1, Col2) values (@col1, @col2)

Mi lógica detrás de escribirlo de esta manera es que la actualización realizará una selección implícita utilizando la cláusula where y si eso devuelve 0, entonces se realizará la inserción.

La alternativa a hacerlo de esta manera sería hacer una selección y luego, en función del número de filas devueltas, haga una actualización o inserte. Esto lo consideré ineficiente porque si va a hacer una actualización, causará 2 selecciones (la primera llamada de selección explícita y la segunda implícita en el lugar de la actualización). Si el proceso hiciera un inserto, entonces no habría diferencia en la eficiencia.

¿Mi lógica está sonando aquí? ¿Es así como combinaría una inserción y una actualización en un proceso almacenado?

Respuestas a la pregunta(9)

Su respuesta a la pregunta