Raro Rendimiento en Consulta en SQL2000

23/12/2005 - 18:39 por Developers | Informe spam
Amigos tengo una Consulta que al poner parametros se demora 30 segundos y
sin parametros se demora 3 segundos
osea:

Tengo esta consulta que se demora 3 a 4 segundos en en traer 11582:
DECLARE @FechaStk char(8)
Set @FechaStk='20051001'

SELECT T3.COD_ITE, T3.FECHA, SUM(T3.ING_ITE-T3.SAL_ITE) AS CANT_DIAR
FROM D_MOVI_ATG T3 WITH (NOLOCK)
WHERE (T3.FECHA>='20051001' AND T3.FECHA<'20051031') AND T3.CDG_ZON='02' AND
SUBSTRING(T3.DOC_REF,1,2) NOT IN ('IK','SK','SD','AT','TA') AND T3.AREA='10'
AND T3.ANU=' ' AND T3.FASN NOT IN ('N')
GROUP BY T3.COD_ITE,T3.FECHA
Union
SELECT T1.COD_ITE, @FechaStk as Fecha, SUM(T1.STK_INI) AS CANT_DIAR
FROM D_INVE_ATG T1 WITH (NOLOCK)
WHERE T1.ANHO='2005' AND T1.CDG_ZON='02' AND T1.AREA='10'
GROUP BY T1.COD_ITE
UNION
SELECT T2.COD_ITE, @FechaStk as Fecha, SUM(T2.ING_ITE-T2.SAL_ITE) AS
CANT_DIAR
FROM D_MOVI_ATG T2 WITH (NOLOCK)
WHERE T2.ANHO='2005' AND T2.CDG_ZON='02' AND SUBSTRING(T2.DOC_REF,1,2) NOT
IN ('IK','SK','SD','AT','TA') AND T2.AREA='10' AND T2.ANU=' ' AND T2.FASN
NOT IN ('N') AND T2.FECHA<'20051001'
GROUP BY T2.COD_ITE

Ahora la Misma Consulta pero en lugar de escribir los valores mando los
parametros declarados:

DECLARE @FECHAINI CHAR(8), @FECHAFIN CHAR(8), @CDG_ZON CHAR(2), @AREA
CHAR(2)
DECLARE @AÑO CHAR(4), @ANU CHAR(1), @FECHASTK DATETIME
SET @FECHAINI = '20051001'
SET @FECHAFIN = '20051031'
SET @CDG_ZON = '02'
SET @AREA = '10'
SET @FECHASTK = CAST(@FECHAINI AS DATETIME)-1
SET @AÑO = CAST(YEAR(@FECHASTK) AS CHAR(4))
SET @ANU = SPACE(1)

SELECT T3.COD_ITE, T3.FECHA, SUM(T3.ING_ITE-T3.SAL_ITE) AS CANT_DIAR
FROM D_MOVI_ATG T3 WITH (NOLOCK)
WHERE (T3.FECHA>=@FECHAINI AND T3.FECHA<@FECHAFIN) AND T3.CDG_ZON=@CDG_ZON
AND SUBSTRING(T3.DOC_REF,1,2) NOT IN ('IK','SK','SD','AT','TA') AND
T3.AREA=@AREA AND T3.ANU=@ANU AND T3.FASN NOT IN ('N')
GROUP BY T3.COD_ITE,T3.FECHA
Union
SELECT T1.COD_ITE, @FechaStk as Fecha, SUM(T1.STK_INI) AS CANT_DIAR
FROM D_INVE_ATG T1 WITH (NOLOCK)
WHERE T1.ANHO=@AÑO AND T1.CDG_ZON=@CDG_ZON AND T1.AREA=@AREA
GROUP BY T1.COD_ITE
UNION
SELECT T2.COD_ITE, @FechaStk as Fecha, SUM(T2.ING_ITE-T2.SAL_ITE) AS
CANT_DIAR
FROM D_MOVI_ATG T2 WITH (NOLOCK)
WHERE T2.ANHO=@AÑO AND T2.CDG_ZON=@CDG_ZON AND SUBSTRING(T2.DOC_REF,1,2) NOT
IN ('IK','SK','SD','AT','TA') AND T2.AREA=@AREA AND T2.ANU=@ANU AND T2.FASN
NOT IN ('N') AND T2.FECHA<@FECHAINI
GROUP BY T2.COD_ITE

Esta Consulta se demora en responder de 30 a 40 segundos en traer 11582 que
es el mismo resultado de la anterior:.

Las pruebas lo estoy haciendo en QA.

Me podrian explicar del porque pasa esto??? se supone que deberia tener el
mismo tiempo de respuesta

Gracias


Dany Acosta
 

Leer las respuestas

#1 Alejandro Mesa
23/12/2005 - 19:59 | Informe spam
Dany,

Primero limpia el buffer y el cache, si es que estas haciendo la prueba en
otra maquina que no sea la de producccion.

dbcc dropcleanbuffers
dbcc freeproccache
go

ahora saca el plan de ejecucion estimado y postealo para ver que esta
haciendo sql server.

set showplan_text on
go

select ...
go

set showplan_text on
go


AMB

"Developers" wrote:

Amigos tengo una Consulta que al poner parametros se demora 30 segundos y
sin parametros se demora 3 segundos
osea:

Tengo esta consulta que se demora 3 a 4 segundos en en traer 11582:
DECLARE @FechaStk char(8)
Set @FechaStk='20051001'

SELECT T3.COD_ITE, T3.FECHA, SUM(T3.ING_ITE-T3.SAL_ITE) AS CANT_DIAR
FROM D_MOVI_ATG T3 WITH (NOLOCK)
WHERE (T3.FECHA>='20051001' AND T3.FECHA<'20051031') AND T3.CDG_ZON='02' AND
SUBSTRING(T3.DOC_REF,1,2) NOT IN ('IK','SK','SD','AT','TA') AND T3.AREA='10'
AND T3.ANU=' ' AND T3.FASN NOT IN ('N')
GROUP BY T3.COD_ITE,T3.FECHA
Union
SELECT T1.COD_ITE, @FechaStk as Fecha, SUM(T1.STK_INI) AS CANT_DIAR
FROM D_INVE_ATG T1 WITH (NOLOCK)
WHERE T1.ANHO='2005' AND T1.CDG_ZON='02' AND T1.AREA='10'
GROUP BY T1.COD_ITE
UNION
SELECT T2.COD_ITE, @FechaStk as Fecha, SUM(T2.ING_ITE-T2.SAL_ITE) AS
CANT_DIAR
FROM D_MOVI_ATG T2 WITH (NOLOCK)
WHERE T2.ANHO='2005' AND T2.CDG_ZON='02' AND SUBSTRING(T2.DOC_REF,1,2) NOT
IN ('IK','SK','SD','AT','TA') AND T2.AREA='10' AND T2.ANU=' ' AND T2.FASN
NOT IN ('N') AND T2.FECHA<'20051001'
GROUP BY T2.COD_ITE

Ahora la Misma Consulta pero en lugar de escribir los valores mando los
parametros declarados:

DECLARE @FECHAINI CHAR(8), @FECHAFIN CHAR(8), @CDG_ZON CHAR(2), @AREA
CHAR(2)
DECLARE @AÑO CHAR(4), @ANU CHAR(1), @FECHASTK DATETIME
SET @FECHAINI = '20051001'
SET @FECHAFIN = '20051031'
SET @CDG_ZON = '02'
SET @AREA = '10'
SET @FECHASTK = CAST(@FECHAINI AS DATETIME)-1
SET @AÑO = CAST(YEAR(@FECHASTK) AS CHAR(4))
SET @ANU = SPACE(1)

SELECT T3.COD_ITE, T3.FECHA, SUM(T3.ING_ITE-T3.SAL_ITE) AS CANT_DIAR
FROM D_MOVI_ATG T3 WITH (NOLOCK)
WHERE (T3.FECHA>=@FECHAINI AND T3.FECHA<@FECHAFIN) AND T3.CDG_ZON=@CDG_ZON
AND SUBSTRING(T3.DOC_REF,1,2) NOT IN ('IK','SK','SD','AT','TA') AND
T3.AREA=@AREA AND T3.ANU=@ANU AND T3.FASN NOT IN ('N')
GROUP BY T3.COD_ITE,T3.FECHA
Union
SELECT T1.COD_ITE, @FechaStk as Fecha, SUM(T1.STK_INI) AS CANT_DIAR
FROM D_INVE_ATG T1 WITH (NOLOCK)
WHERE T1.ANHO=@AÑO AND T1.CDG_ZON=@CDG_ZON AND T1.AREA=@AREA
GROUP BY T1.COD_ITE
UNION
SELECT T2.COD_ITE, @FechaStk as Fecha, SUM(T2.ING_ITE-T2.SAL_ITE) AS
CANT_DIAR
FROM D_MOVI_ATG T2 WITH (NOLOCK)
WHERE T2.ANHO=@AÑO AND T2.CDG_ZON=@CDG_ZON AND SUBSTRING(T2.DOC_REF,1,2) NOT
IN ('IK','SK','SD','AT','TA') AND T2.AREA=@AREA AND T2.ANU=@ANU AND T2.FASN
NOT IN ('N') AND T2.FECHA<@FECHAINI
GROUP BY T2.COD_ITE

Esta Consulta se demora en responder de 30 a 40 segundos en traer 11582 que
es el mismo resultado de la anterior:.

Las pruebas lo estoy haciendo en QA.

Me podrian explicar del porque pasa esto??? se supone que deberia tener el
mismo tiempo de respuesta

Gracias


Dany Acosta



Preguntas similares