Selam,
sql serverda 1.648.256 satır bir veri girişini yaptım. bunlar üzerinde güncelleme yapmak istiyorum ama çok uzun zaman alıyor.güncellemyi CURSOR özelliğini kullanarak yapıyorum ama çok yavaş kayıt yapıyor.
bunu hızlandırmanın bir yolu var mı?
SQL Server da hızlı güncelleme nasıl yapılabilir?
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Selam,
1. Query ile UPDATE cümleciği yazıp bunu ExecSQL çalıştırabilirsin.
2. Bir stored procedure yazıp, buna parametre geçip öyle update yapabilirsin.
Bir de nasıl update'ler yapıyorsun? Tek kayıt üzerindemi, yoksa 300-500 bin kayıt üzerinde mi? Örnek kodu gönderebilirsen daha farklı çözümlerde olabilir.
Kolay gelsin.
1. Query ile UPDATE cümleciği yazıp bunu ExecSQL çalıştırabilirsin.
2. Bir stored procedure yazıp, buna parametre geçip öyle update yapabilirsin.
Bir de nasıl update'ler yapıyorsun? Tek kayıt üzerindemi, yoksa 300-500 bin kayıt üzerinde mi? Örnek kodu gönderebilirsen daha farklı çözümlerde olabilir.
Kolay gelsin.
aşagıdaki gibi bir sql ifadesi kullandım bütün kayıtları baştan sonuna kadar tarıyor ve tararken de günceleme yapıyorum
use lotdata
declare im cursor
local
for select 1cek,2cek,3cek,4cek,5cek,6cek from loto
for update of m1,m2,m3,m4,m5
declare @c int
open im
fetch im
set @c=1
while @c<1249076
begin
update loto
set [m1]=([2cek]-[1cek]),
[m2]=([3cek]-[2cek]),
[m3]=([4cek]-[3cek]),
[m4]=([5cek]-[4cek]),
[m5]=([6cek]-[5cek])
where current of im
fetch im
set @c=@c+1
end
close im
deallocate im
use lotdata
declare im cursor
local
for select 1cek,2cek,3cek,4cek,5cek,6cek from loto
for update of m1,m2,m3,m4,m5
declare @c int
open im
fetch im
set @c=1
while @c<1249076
begin
update loto
set [m1]=([2cek]-[1cek]),
[m2]=([3cek]-[2cek]),
[m3]=([4cek]-[3cek]),
[m4]=([5cek]-[4cek]),
[m5]=([6cek]-[5cek])
where current of im
fetch im
set @c=@c+1
end
close im
deallocate im
Merhaba,
birkaç tavsiyem var, ancak denemek lazım. 100-150 bin kayıtta deneyip karşılaştırabilirsin.
1. Eğer index yoksa, başa KOD isimli bir autoinc alan ekleyip, indexle.
2. Query ile direk UPDATE cümleciği yazıp, bunu ExecSQL ile çalıştır. Şuna benzer birşey olacak.
UPDATE LOTO
set [m1]=([2cek]-[1cek]),
[m2]=([3cek]-[2cek]),
[m3]=([4cek]-[3cek]),
[m4]=([5cek]-[4cek]),
[m5]=([6cek]-[5cek])
3. ikinci adımdaki olayı stored procedure ile yap.
Kolay gelsin.
birkaç tavsiyem var, ancak denemek lazım. 100-150 bin kayıtta deneyip karşılaştırabilirsin.
1. Eğer index yoksa, başa KOD isimli bir autoinc alan ekleyip, indexle.
2. Query ile direk UPDATE cümleciği yazıp, bunu ExecSQL ile çalıştır. Şuna benzer birşey olacak.
UPDATE LOTO
set [m1]=([2cek]-[1cek]),
[m2]=([3cek]-[2cek]),
[m3]=([4cek]-[3cek]),
[m4]=([5cek]-[4cek]),
[m5]=([6cek]-[5cek])
3. ikinci adımdaki olayı stored procedure ile yap.
Kolay gelsin.