Sua suposição está correta, esta é a maneira ideal de fazer isso e é chamada de upsert/merge.
Importância do UPSERT - de sqlservercentral.com:
Para cada atualização no caso mencionado acima, estamos removendo uma leitura adicional da tabela se usarmos o UPSERT em vez de EXISTS.Infelizmente para um Insert, os métodos UPSERT e IF EXISTS usam o mesmo número de leituras na tabela. ser feito quando houver uma razão muito válida para justificar a E/S adicional. A maneira otimizada de fazer as coisas é garantir que você tenha o mínimo possível de leituras no BD.
A melhor estratégia é tentar a atualização. Se nenhuma linha for afetada pela atualização, insira. Na maioria das circunstâncias, a linha já existirá e apenas uma E/S será necessária.
Editar :Por favor, confira esta resposta e a postagem de blog vinculada para saber mais sobre os problemas com esse padrão e como fazê-lo funcionar com segurança.