Ceriwis  

Go Back   Ceriwis > HOBI > Komputer & Teknologi > Programming

Programming Share, tanya jawab, saling bantu antar programmer dengan berbagai macam bahasa pemrograman.

Reply
 
Thread Tools
  #1  
Old 20th November 2011
Permenkaret Permenkaret is offline
Ceriwiser
 
Join Date: Nov 2011
Posts: 351
Rep Power: 14
Permenkaret mempunyai hidup yang Normal
Default [ASK-msSQL]Keanehan pada SP

gan ane mau tanya dnk



ane ada SP :


Spoiler for SP:







Code:

ALTER PROCEDURE [dbo].[PmyProc]

(
@grup varchar(50) = NULL,
@branch varchar(50) = NULL,
@tahun varchar(3) = NULL,
@obj VARCHAR(4) = NULL
)
AS
SET NOCOUNT ON

IF @branch = '' OR @branch = '0000'
BEGIN
SET @grup = NULL
END

IF @grup = ''
BEGIN
SET @grup = NULL
END

IF @tahun = ''
BEGIN
SET @tahun = NULL
END

SELECT distinct c.xx, c.xx2
FROM dbo.tbl1 (NOLOCK) a
INNER JOIN dbo.tbl2 (NOLOCK) b ON a.dealer = b.dealer AND a.cabang = b.cabang
INNER JOIN dbo.tbl3 (NOLOCK) c ON c.xx = b.xx
LEFT OUTER JOIN dbo.tbl4 (NOLOCK) d ON b.dealer = d.dealer AND b.cabang = d.cabang
LEFT OUTER JOIN dbo.tbl5 (NOLOCK) e ON d.grup = e.grup
WHERE a.f4 = 1
AND
(
@Grup IS NULL
Or (e.Grup = @Grup AND e.f5 = 1 AND d.f6 = 1)
Or b.dealer = @Grup
)
AND
(
@branch IS NULL
Or b.cabang = @branch
)
AND
(
@tahun IS NULL
Or b.tahun = @tahun
)
AND
(
@obj IS NULL
Or b.obj = @obj
)











trus ane jalankan dengan parameter




Code:

exec myProc @branch='0000',@Group='JA20',@Obj='001',@tahun='20 11'

setelah ane jalankan dengan code diatas, jasil querynya baru keluar setelah 40 detik an



Sedangkan dengan parameter yg sama, ane jalankan isi dari SP diatas secara langsung tanpa pake SP dengan paramter yang sama... hasil nya lsg keluar setelah 0-1 detik



query yang ane pake :


Spoiler for query:







Code:

Declare @HQBranchID VARCHAR(50),
@GroupID VARCHAR(50),
@ObjectCode VARCHAR(3),
@YearPoint VARCHAR(4)

SET @branch= '0000'
SET @Group = 'JA20'
SET @Obj = '001'
SET @tahun = '2011'


SET NOCOUNT ON

IF @branch = '' OR @branch = '0000'
BEGIN
SET @grup = NULL
END

IF @grup = ''
BEGIN
SET @grup = NULL
END

IF @tahun = ''
BEGIN
SET @tahun = NULL
END


SELECT distinct c.xx, c.xx2
FROM dbo.tbl1 (NOLOCK) a
INNER JOIN dbo.tbl2 (NOLOCK) b ON a.dealer = b.dealer AND a.cabang = b.cabang
INNER JOIN dbo.tbl3 (NOLOCK) c ON c.xx = b.xx
LEFT OUTER JOIN dbo.tbl4 (NOLOCK) d ON b.dealer = d.dealer AND b.cabang = d.cabang
LEFT OUTER JOIN dbo.tbl5 (NOLOCK) e ON d.grup = e.grup
WHERE a.f4 = 1
AND
(
@Grup IS NULL
Or (e.Grup = @Grup AND e.f5 = 1 AND d.f6 = 1)
Or b.dealer = @Grup
)
AND
(
@branch IS NULL
Or b.cabang = @branch
)
AND
(
@tahun IS NULL
Or b.tahun = @tahun
)
AND
(
@obj IS NULL
Or b.obj = @obj
)













Yang menyebabkan SP lama adalah


Code:

@branch IS NULL
Or b.cabang = @branch

karena nilai @Branch adalah '0000'



maka dari query diatas nilai @branch ane diset menjadi null



bagian inilah yg menyebabkan SP ane menjadi lama



pertanyaan yg ingin nyubi tanyakan adalah :



kenapa pas di SP, hasil baru keluar setelah 40an detik

sedang pada query langsung, hasil sudah keluar dalam waktu kurang dari 1 detik



Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off


 


All times are GMT +7. The time now is 06:28 AM.


no new posts