İlk Yöntem
Öncelikle update işlemi gerçekleştirilir, bu işlem sonucunda etkilenen kayıt sayısı kontrol edilir, eğer @@ROWCOUNT = 0 ise güncellenebilecek bir kayıt bulunmuyor demektir, bu durumda kayıt eklenir.
UPDATE Tablo1 SET Kolon1 = @Kolon1_Degeri WHEREID = @IDIF @@ROWCOUNT = 0BEGININSERT INTO Tablo1 (Kolon1)VALUES (@Kolon1_Degeri)END
İkinci Yöntem
Öncelikle kaydın olup olmadığını anlamak için IF EXISTS kullanılarak select cümlesi çalştırılır. Kayıt varsa güncelleme işlemi yapılıyor, yoksa ekleme işlemi yapılıyor.IF EXISTS (SELECT ID FROM Tablo1 WHEREID = @ID)BEGINUPDATE Tablo1 SET Kolon1= @Kolon1_DegeriWHERE ID = @IDENDELSEBEGININSERT INTO Tablo1 (ID, Kolon1) VALUES(@ID, @Kolon1_Degeri)END
Peki hangi yöntem performans açısından daha iyidir?
Kesinlikle X. yöntem kullanılmalıdır gibi birşey söylemek mümkün değil, tamamen kullandığınız yapıyla ilgili sizin karar vermeniz gerekmektedir. Şöyle ki,- Eğer kayıt büyük ihtimalle bulunuyorsa yani güncelleme işleminin büyük ihtimalle gerçekleşeceğini düşünüyorsanız 1. yöntemi uygulamak performans açısından daha iyi olacaktır.- Eğer büyük ihtimalle insert işlemi gerçekleşecek diyorsanız, 1. yönteme göre 2. yöntemi uygulamak daha mantıklı olacaktır. Çünkü INSERT ve UPDATE işlemleri pahalı işlemlerdir.