SP deki mantık mı hatalı acaba.

MS SQL Server veritabanı ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
varyemez
Üye
Mesajlar: 262
Kayıt: 01 Oca 2009 11:00
Konum: Bursa
İletişim:

SP deki mantık mı hatalı acaba.

Mesaj gönderen varyemez »

Aşağıdaki gibi bir SP miz var. Verilen anahtara göre bir tablodan diğerine kayıt kopyalıyor. Çalışmasında önceleri bir sıkıntı yoktu ancak zaman içinde birinci tablodaki kayıt sayısı artınca (40 50 milyon civarı) sık sık timeout hatası vermeye başladı. select ile çekip insert ettiği kayıt sayısı da çok değil 100 - 200 en fazla.

Kod: Tümünü seç

ALTER PROCEDURE [dbo].[PTS2Tabloya] 
	
	@KOLETIK nvarchar(40),
	@SIL tinyint ,
	@EKLENEN int OUT
	
AS
BEGIN
	
	SET NOCOUNT ON;
	set @EKLENEN = 0
IF @SIL=0 AND LEN(@KOLETIK)=20
begin
INSERT INTO dbo.URUNGIR (GTIN,SN,XD,BN,CLABEL,SLABEL)
SELECT GTIN,SN,XD,BN,CLABEL,SLABEL FROM dbo.PTSGELEN WHERE 
    (CLABEL = @KOLETIK OR SLABEL = @KOLETIK); 
set @EKLENEN = @@Rowcount ;
END; 

IF @SIL=1 AND LEN(@KOLETIK)=20
BEGIN
DELETE FROM dbo.URUNGIR WHERE (CLABEL = @KOLETIK OR SLABEL = @KOLETIK) ;
set @EKLENEN = @@Rowcount ;

END;

  
END



unalaygun
Üye
Mesajlar: 139
Kayıt: 27 Mar 2004 12:34
Konum: istanbul

Re: SP deki mantık mı hatalı acaba.

Mesaj gönderen unalaygun »

Acaba select cümleciğimi uzun sürüyor yoksa insert mü yani select tek başına çalıştıdığımız da ne kadar sürüyor index eksiği olabilirmi ya da orlamak yerine ayrı ayrı yapmak hızlandırabilirmi eğer select cümleciğinde sıkıntı yok ise diğer tablo üzerinde gereksiz index olabilir mi ya da triger var olabilir mi ?

Senaryoyu bilmediğim için söylüyorum dts yaparak aktarım yapılsa ya da transaction gerekli değilse eğer transactionlar kapatılabilir.
Ya da ETL yönetimi ile Dts paketleri paralel olarak ayrılıştırılarak daha hızlı yapılabiliyor denenebilir.
İyi çalışmalar.
derviş
Cevapla