Pada SQL 2008, Anda cukup menggunakan MERGE - jauh lebih sederhana daripada salah satu pendekatan Anda.
Saya juga tidak bersama Anda tentang "SAYA TIDAK ingin menggunakan transaksi karena alasan kinerja" - setiap perintah DML yang Anda jalankan adalah bagian dari beberapa transaksi, jadi ada transaksi bahkan jika Anda tidak membukanya secara eksplisit. Jika Anda mengalami masalah kinerja, Anda dapat memposting lebih banyak detail sehingga Anda mendapatkan lebih banyak bantuan terkait kinerja.
Sunting:Jika Anda membutuhkan penyisipan yang sangat cepat, jangan masukkan satu baris dalam satu waktu. Tambahkan kumpulan baris, dan gunakan MERGE - keuntungan yang akan Anda dapatkan dari menyisipkan kumpulan baris sekaligus akan jauh melebihi peningkatan kecil apa pun yang akan Anda dapatkan dari mengoptimalkan kecepatan menambahkan satu baris.
Bagaimanapun, penalaran teoretis tentang apa pun yang terkait dengan basis data biasanya tidak cukup baik. Anda benar-benar perlu melakukan benchmark untuk menentukan mana yang lebih cepat. Apa yang Anda sebut "kueri yang tidak perlu untuk baris yang ada" mungkin sama sekali tidak berarti, dan Anda tidak akan tahu apakah ini masalahnya sampai Anda mengukurnya dalam kondisi yang realistis.