by Uğur Çelenk
6. Kasım 2008 01:05
İ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 WHERE ID = @ID
IF @@ROWCOUNT = 0
BEGIN
INSERT 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 WHERE ID = @ID)
BEGIN
UPDATE Tablo1 SET Kolon1= @Kolon1_Degeri WHERE ID = @ID
END
ELSE
BEGIN
INSERT 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.