problemas con Procediento Almacenado

11/10/2005 - 18:09 por Diego M R®mero | Informe spam
Hola
Como estan ?

Como puedo mejorar el desempeño de un procedimiento almacenado, que se
demora mas o menos 30 segundos en seleccionar 20 registros de una tabla,
donde hay por lo menos, 175000 registros.

Me preocupa por que esto solo lleva 6 meses de movimiento e imaginense
cuando lleva mas de 2 años, será imposible ejecutar este procedimiento.

Será que la demora es por los paramentros que evaluan si es nulo.

Agradezco su colaboración.

Diego


CREATE PROCEDURE paQryVencimientosLta @pmTipDoc VARCHAR(3),@pmIdCia
CHAR(2),@pmIdClase VARCHAR(4),@pmIdCliente VARCHAR(11),@pmIdVehiculo
VARCHAR(10)

AS
SELECT TipDoc, Documento, IdCia, Item,ValorFactura-ValorAbono AS
ValorSaldo,ValorFactura,ValorAbono,FecEmision,FecVence,
IdCliente,T.RazonSocial AS NomCliente,IdAgencia,
IdVehiculo,VehPropio,IdVendedor,C.RazonSocial AS Conductor
,V.IdCargo AS IdCarg,Concepto,V.IdClase AS CodClase,ClaseCuenta,Factura,
Referencia, Detalle,TipRec, Recibo, IdCiaRec,ValorAtcpo
FROM Trn_Vencimientos AS V INNER JOIN Terceros AS T ON
V.IdCliente=T.IdTercero
INNER JOIN ClaseCue AS U ON V.IdClase=U.IdClase
INNER JOIN Terceros AS C ON V.IdVendedor=C.IdTercero
INNER JOIN Fijos AS F ON V.IdCargo=F.IdCargo
WHERE (ValorFactura-ValorAbono)>0 AND TipDoc=ISNULL(@pmTipDoc,TipDoc) AND
IdCia=ISNULL(@pmIdCia,IdCia) AND V.IdClase=ISNULL(@pmIdClase ,V.IdClase)
AND IdCliente=ISNULL(@pmIdCliente,IdCliente)
AND IdVehiculo=ISNULL(@pmIdVehiculo,IdVehiculo)
ORDER BY Prioridad,FecVence,TipDoc,IdCia,Documento,Item
GO
 

Leer las respuestas

#1 Maxi
11/10/2005 - 18:08 | Informe spam
Hola, el problema lo tienes aqui:

WHERE (ValorFactura-ValorAbono)>0

Si usas asi el Where no usara indices :(



Salu2
Maxi [MVP SQL SERVER]


"Diego M R®mero" escribió en el mensaje
news:
Hola
Como estan ?

Como puedo mejorar el desempeño de un procedimiento almacenado, que se
demora mas o menos 30 segundos en seleccionar 20 registros de una tabla,
donde hay por lo menos, 175000 registros.

Me preocupa por que esto solo lleva 6 meses de movimiento e imaginense
cuando lleva mas de 2 años, será imposible ejecutar este procedimiento.

Será que la demora es por los paramentros que evaluan si es nulo.

Agradezco su colaboración.

Diego


CREATE PROCEDURE paQryVencimientosLta @pmTipDoc VARCHAR(3),@pmIdCia
CHAR(2),@pmIdClase VARCHAR(4),@pmIdCliente VARCHAR(11),@pmIdVehiculo
VARCHAR(10)

AS
SELECT TipDoc, Documento, IdCia, Item,ValorFactura-ValorAbono AS
ValorSaldo,ValorFactura,ValorAbono,FecEmision,FecVence,
IdCliente,T.RazonSocial AS NomCliente,IdAgencia,
IdVehiculo,VehPropio,IdVendedor,C.RazonSocial AS Conductor
,V.IdCargo AS IdCarg,Concepto,V.IdClase AS CodClase,ClaseCuenta,Factura,
Referencia, Detalle,TipRec, Recibo, IdCiaRec,ValorAtcpo
FROM Trn_Vencimientos AS V INNER JOIN Terceros AS T ON
V.IdCliente=T.IdTercero
INNER JOIN ClaseCue AS U ON V.IdClase=U.IdClase
INNER JOIN Terceros AS C ON V.IdVendedor=C.IdTercero
INNER JOIN Fijos AS F ON V.IdCargo=F.IdCargo
WHERE (ValorFactura-ValorAbono)>0 AND TipDoc=ISNULL(@pmTipDoc,TipDoc) AND
IdCia=ISNULL(@pmIdCia,IdCia) AND V.IdClase=ISNULL(@pmIdClase ,V.IdClase)
AND IdCliente=ISNULL(@pmIdCliente,IdCliente)
AND IdVehiculo=ISNULL(@pmIdVehiculo,IdVehiculo)
ORDER BY Prioridad,FecVence,TipDoc,IdCia,Documento,Item
GO



Preguntas similares