Inserir atualização do procedimento armazenado no SQL Server

Eu escrevi um procedimento armazenado que fará uma atualização se existir um registro, caso contrário ele fará uma inserção. Parece algo como isto:

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

Minha lógica por trás de escrevê-lo dessa maneira é que a atualização executará uma seleção implícita usando a cláusula where e, se retornar 0, a inserção ocorrerá.

A alternativa para fazer isso dessa forma seria fazer um select e, em seguida, com base no número de linhas retornadas, faça uma atualização ou inserção. Isso eu considero ineficiente, porque se você fizer uma atualização, isso causará 2 seleções (a primeira chamada de seleção explícita e a segunda implícita no local da atualização). Se o procedimento fosse fazer uma inserção, não haveria diferença na eficiência.

A minha lógica soa aqui? É assim que você combinaria uma inserção e atualização em um procedimento armazenado?

questionAnswers(9)

yourAnswerToTheQuestion