Why does a conditional not affect query speed?

Posted by Telos on Stack Overflow See other posts from Stack Overflow or by Telos
Published on 2010-05-10T23:24:27Z Indexed on 2010/05/11 0:04 UTC
Read the original article Hit count: 356

Filed under:
|

I have a stored procedure that was taking a "long" period of time to execute. The query only needs to return data in one case, so I figured I could check for that case and just return before hitting the actual query.

The only problem is that it still takes the same amount of time to execute with an if statement. I have verified that the code inside the if is not executing, and that if I replace the complex query with a simple select the speed is fine... so now I'm confused.

Why is the query being slowed down by code that doesn't get executed when the conditional is false?

Here's the query itself:

ALTER PROCEDURE [dbo].[pr_cbc_GetCokeInfo]
        @pa_record int,
        @pb_record int      
AS
BEGIN   
    SET NOCOUNT ON;

declare @ticketRec int

SELECT @ticketRec = TicketRecord
FROM eservice_live..v_sdticket 
where TicketRecord=@pa_record 
AND serviceCompanyID = 1139
AND @pb_record IS NULL


if  @ticketRec IS NULL return

    select record = null,
    doc_ref =   @pa_record,     
    memo_type = 'I',
    memo = 'Bottler:        ' + isnull(Bottler, '') + '
    '   +   'Sales Loc:     ' + isnull(SalesLocation, '') + '
    '   +   'Outlet Desc:   ' + isnull(OutletDesc, '') + '
    '   +   'City:          ' + isnull(OutletCity, '') + '
    '   +   'EquipNo:       ' + isnull(EquipNo, '')     + '
    '   +   'SerialNo:      ' + isnull(SerialNo, '')    + '
    '   +   'PhaseNo:       ' + isnull(cast(PhaseNo as varchar(255)), '')       + '
    '   +   'StaticIP:      ' + isnull(StaticIP, '')    + '
    '   +   'Air Card:      ' + isnull(AirCard, '')
    FROM eservice_live..v_SDExtendedInfoField ef
    JOIN eservice_live..CokeSNList csl ON ef.valueText=csl.SerialNo
    where   ef.docType='CLH' 
    AND     ef.docref = @ticketRec
    AND     ef.ExtendedDocNumber=5

SET NOCOUNT OFF;    

END

© Stack Overflow or respective owner

Related posts about tsql

Related posts about sql-server-2005