Sql 2014 prosed...
 
Bildirimler
Hepsini Temizle

Sql 2014 prosedür işlemci sorunu  

  RSS
Cihan_Aksoy
(@Cihan_Aksoy)
Üye

Merhaba, 8-9 IF koşullu bir prosedürüm var. Ancak aktif ettiğim zaman çok aşırı derecede CPU kullanımı oluyor ve haliylen sistem yavaşlıyor. 

 Prosedürüm şu şekilde;

  DECLARE @ID int = (SELECT ID FROM ItemList WHERE Serial = @Serial)

IF(@ReferenceID = 24679 OR @ReferenceID = 24683 OR @ReferenceID = 24687 OR @ReferenceID = 24691)

BEGIN

INSERT INTO OptionList VALUES 

(@ID , 1 , 0 , 56000 , 1  , 0  , 56000 , 0),

(@ID , 1 , 1 , 56003 , 1  , 0  , 56003 , 0)

END

ELSE IF(@ReferenceID = 24680 OR @ReferenceID = 24684 OR @ReferenceID = 24692 OR @ReferenceID = 24688)

BEGIN

INSERT INTO OptionList VALUES 

(@ID , 1 , 0 , 56001 , 1  , 0  , 56001 , 0),

(@ID , 1 , 1 , 56004 , 1  , 0  , 56004 , 0),

(@ID , 1 , 2 , 56005 , 1  , 0  , 56005 , 0)

END

ELSE IF(@ReferenceID = 38849 OR @ReferenceID = 38852 OR @ReferenceID = 38861 OR @ReferenceID = 38864)

BEGIN

INSERT INTO OptionList VALUES 

(@ID , 1 , 0 , 56006 , 1  , 0  , 56006 , 0),

(@ID , 1 , 1 , 56009 , 1  , 0  , 56019 , 0)

END

ELSE IF(@ReferenceID = 38850 OR @ReferenceID = 38853 OR @ReferenceID = 38862 OR @ReferenceID = 38865)

BEGIN

INSERT INTO OptionList VALUES 

(@ID , 1 , 0 , 56007 , 1  , 0  , 56007 , 0),

(@ID , 1 , 1 , 56010 , 1  , 0  , 56010 , 0)

END

ELSE IF(@ReferenceID = 38851 OR @ReferenceID = 38854 OR @ReferenceID = 38863 OR @ReferenceID = 38866)

BEGIN

INSERT INTO OptionList VALUES 

(@ID , 1 , 0 , 56008 , 1  , 0  , 56008 , 0),

(@ID , 1 , 1 , 56010 , 1  , 0  , 56010 , 0),

(@ID , 1 , 2 , 56011 , 1  , 0  , 56011 , 0)

END

ELSE IF(@ReferenceID = 38843 OR @ReferenceID = 38846 OR @ReferenceID = 38855 OR @ReferenceID = 38858)

BEGIN

INSERT INTO OptionList VALUES 

(@ID , 1 , 0 , 56012 , 1  , 0  , 56012 , 0),

(@ID , 1 , 1 , 56015 , 1  , 0  , 56015 , 0)

END

ELSE IF(@ReferenceID = 38844 OR @ReferenceID = 38847 OR @ReferenceID = 38856 OR @ReferenceID = 38859)

BEGIN

INSERT INTO OptionList VALUES 

(@ID , 1 , 0 , 56013 , 1  , 0  , 56013 , 0),

(@ID , 1 , 1 , 56016 , 1  , 0  , 56016 , 0)

END

ELSE IF(@ReferenceID = 38845 OR @ReferenceID = 38848 OR @ReferenceID = 38857 OR @ReferenceID = 38860)

BEGIN

INSERT INTO OptionList VALUES 

(@ID , 1 , 0 , 56014 , 1  , 0  , 56014 , 0),

(@ID , 1 , 1 , 56016 , 1  , 0  , 56016 , 0),

(@ID , 1 , 2 , 56017 , 1  , 0  , 56017 , 0)

END

 Daha optimize bir halde ve CPU'yu kasmayacak şekilde nasıl kullanabilirim ?

Alıntı
Gönderildi : 14/12/2014 15:52
oldmember
(@yavuzfilizlibay)
Üye

Merhaba

Insert ettiğiniz tablonun index yapısı nasıl. 

CevapAlıntı
Gönderildi : 14/12/2014 22:47
Cihan_Aksoy
(@Cihan_Aksoy)
Üye

Merhaba. Öncelikle cevabınız için çok teşekkür ederim. OptionList tablosunun yapısı şu şekildedir; 

Design: http://prntscr.com/5gy0cu

Index: http://prntscr.com/5gy0m0

 

CevapAlıntı
Gönderildi : 15/12/2014 05:12
oldmember
(@yavuzfilizlibay)
Üye

Tabloda 3 tane primary key var, kilitlemesi gayet normal, tablonun yapısını değiştirmeniz gerekir. Birden fazla primary key olması sağlıksız bir durumdur, tavsiye edilmez.

CevapAlıntı
Gönderildi : 17/12/2014 13:56
Paylaş: