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

Preguntas similare

Leer las respuestas

#11 Diego M R®mero
13/10/2005 - 17:25 | Informe spam
Buena idea
Me podrias decir donde encuentro información o como se hace, mas o memos un
ejemplo.

¿Como creo un SP con el WHERE dinámicamente, es decir un parametro que tenga
la condición ?

Diego

"Saul Batista" escribió en el mensaje
news:ORzAtT$

Otra opcion que tienes es criar el select dinamicamente donde solo tienes
las condiciones que se aplican
y asi no vas a tener un WHERE con tantas condiciones y luego más rapido.

Saludos,

Saul Batista



"Diego M R®mero" wrote in message
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
>
>
>


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida