Asumsi Anda benar, ini adalah cara optimal untuk melakukannya dan ini disebut upsert/merge.
Pentingnya UPSERT - dari sqlservercentral.com:
Untuk setiap pembaruan dalam kasus yang disebutkan di atas, kami menghapus satu pembacaan tambahan dari tabel jika kami menggunakan UPSERT alih-alih EXISTS. Sayangnya untuk Sisipan, metodeUPSERT dan IF EXISTS menggunakan jumlah pembacaan yang sama pada tabel. Oleh karena itu, pemeriksaan keberadaan hanya boleh dilakukan dilakukan ketika ada alasan yang sangat sah untuk membenarkan I/O tambahan. Cara yang dioptimalkan untuk melakukan sesuatu adalah memastikan bahwa Anda hanya memiliki sedikit bacaan di DB.
Strategi terbaik adalah mencoba pembaruan. Jika tidak ada baris yang terpengaruh oleh pembaruan, masukkan. Di sebagian besar keadaan, baris sudah ada dan hanya satu I/O yang diperlukan.
Sunting :Silakan lihat jawaban ini dan posting blog tertaut untuk mempelajari tentang masalah dengan pola ini dan cara membuatnya bekerja dengan aman.