Büyük Bir Tabloyu Update Etme

Büyük Bir Tabloyu Update Etme

Yüzbinlerce kaydı sistemi yormadan update etmek için bir yöntem.

DML işlemleri (insert, update, delete) günlük hayatta en çok kullandığımız işlemlerdir ve genelde sistemi yormazlar. Ancak yüzbinlerce kaydı güncellemek istediğimizde aslında çok masum görünen bu işlemlerin ne kadar vahşileşebileceğine tanık olabiliriz. Bu sebepten çok sayıda kayıt için işlem yapmam gerektiğinde bunları bir döngüde gerçekleştiririm. Örneğin veritabanımızda bir milyon abonenin telefon numaralarını development ortamında maskeleyelim. Öncelikle kayıt sayısını tanımlayalım: 
 
declare @count int 
set @count = (select count (*) from [DB_ADI]..[Musteri]
where ISNUMERIC([Telefon]) =  1 and [Telefon] != '00000000')
select @count

 

Tablomuzda NULL kayıtlar veya zaten maskelenmiş kayıtlar olabileceğinden where koşulunu kullandım.
 
Ardından bu kayıtları while döngüsü kullanarak onbinerli pakette güncelleyelim:
while @count > 0
begin
update top  (10000) [DB_ADI]..[Musteri]
set [Telefon] =  '00000000'
where ISNUMERIC([Telefon]) =  1 and [Telefon] != '00000000'
set @count = (select count (*) from [DB_ADI]..[Musteri]
where ISNUMERIC([Telefon]) =  1 and [Telefon] != '00000000')
waitfor delay '00:00:01'
end

 

Yorum Yaz

Yorum yazabilmek için üye girişi yapmanız gerekiyor!

Yukarı Git