Hola lista estoy cambiando algunos sp que estan utilizando tablas
temporales, y probando en el query analizer su tiempo de respuesta y bueno
los sp con temporales se demoran mucho mas que los sp que he cambiado, pero
ahora cuando los ejecuto desde mi aplicativo estos me devyuelven tiempo de
espera el sp que no tiene temporales, en cambio el sp que si tiene
temporales que se demora mas no me devuelve tiempo de espera, les adjunto el
codigo de ambos sps
SP con Temporales
CREATE Procedure C_SALDSS_MayorAuxiliarSoles
@Ano char(4),
@Mes char(2),
@CuentaIni Cuenta,
@CuentaFin Cuenta
AS
Set Nocount On
SELECT Distinct D.CUEN_CodCta, C.CUEN_Desc, Convert(Decimal(12,2),0) AS
DebeAcum, Convert(Decimal(12,2),0) AS HaberAcum,
Convert(Decimal(12,2),0) AS DebeMes, Convert(Decimal(12,2),0) AS HaberMes,
Convert(Decimal(12,2),0) AS DebeResul,
Convert(Decimal(12,2),0) AS HaberResul, Convert(Decimal(12,2),0) AS Deudor,
Convert(Decimal(12,2),0) AS Acreedor
Into #Mayor
FROM DetVoucher D LEFT OUTER JOIN Cuentas C ON D.CUEN_ano = C.CUEN_ano AND
D.CUEN_CodCta = C.CUEN_CodCta
Where CABV_ano = @Ano and CABV_mes <= @Mes Order by D.Cuen_CodCta
Select CUEN_CodCta, sum(SALD_Debe) as Debe, sum(SALD_Haber) as Haber,
sum(SALD_DebeDol) as DebeDol,
sum(SALD_HaberDol) as HaberDol
Into #Inicial
From SaldosCont
Where SALD_Mes < @Mes and SALD_ano = @Ano
Group by CUEN_CodCta
Update #Mayor Set
DebeAcum = Debe ,
HaberAcum = Haber
From #Mayor M inner join #Inicial I on M.CUEN_CodCta = I.CUEN_CodCta
Update #Mayor Set
DebeMes = SALD_Debe,
HaberMes = SALD_Haber
From #Mayor M inner join SaldosCont I on M.CUEN_CodCta = I.CUEN_CodCta
Where I.SALD_Ano = @Ano and I.SALD_Mes = @Mes
Update #Mayor Set
DebeResul = DebeAcum + DebeMes,
HaberResul = HaberAcum + HaberMes
Update #Mayor Set
Deudor = Case When (DebeResul - HaberResul) > 0 then DebeResul - HaberResul
else 0 end,
Acreedor = Case When (HaberResul - DebeResul) > 0 then HaberResul -
DebeResul else 0 end
Select * from #Mayor Where CUEN_CodCta between @CuentaIni and @CuentaFin
Order by CUEN_CodCta
Set NoCount Off
/***************************************************/
SP sin Temporales
Create Procedure C_SALDSS_MayorAuxiliarSoles -- C_SALDSS_MayorAuxiliarSoles
'2006', '09', '16', '16.9.99.99.99.99'
@Ano Char(4), @Mes Char(2), @CuentaIni Cuenta, @CuentaFin Cuenta
As
Select A.CUEN_CodCta, C.CUEN_Desc, A.DebeAcum, A.HaberAcum, A.DebeMes,
A.HaberMes, A.DebeAcum + A.DebeMes As DebeResul, A.HaberAcum + A.HaberMes As
HaberResul,
Case When (A.DebeAcum + A.DebeMes) - (A.HaberAcum + A.HaberMes) > 0 Then
(A.DebeAcum + A.DebeMes) - (A.HaberAcum + A.HaberMes) Else 0 End As Deudor,
Case When (A.HaberAcum + A.HaberMes) - (A.DebeAcum + A.DebeMes) > 0 Then
(A.HaberAcum + A.HaberMes) - (A.DebeAcum + A.DebeMes) Else 0 End As Acreedor
From (Select D.CUEN_CodCta,
(Select Sum(SALD_Debe) From SaldosCont Where SALD_Mes < @Mes And
CUEN_CodCta = D.CUEN_CodCta And SALD_Ano = D.CUEN_Ano) As DebeAcum,
(Select Sum(SALD_Haber) From SaldosCont Where SALD_Mes < @Mes And
CUEN_CodCta = D.CUEN_CodCta And SALD_Ano = D.CUEN_Ano) As HaberAcum,
Sum(D.DETV_Debe) As DebeMes, Sum(D.DETV_Haber) As HaberMes
From DetVoucher D
Where D.CABV_Ano = @Ano And D.CABV_Mes = @Mes And D.CUEN_CodCta Between
@CuentaIni And @CuentaFin
Group by D.CUEN_CodCta, D.CUEN_Ano
Union All
Select SC.CUEN_CodCta, Sum(SC.SALD_Debe), Sum(SC.SALD_Haber), 0, 0
From SaldosCont SC
Where SC.CUEN_CodCta Between @CuentaIni And @CuentaFin And SC.SALD_Ano =
@Ano And SC.SALD_Mes < @Mes
And (Select Count(*) From Cuentas Where SC.CUEN_CodCta = CUEN_CuentaPadre
And CUEN_CuentaPadre Is Not Null And
SC.SALD_Ano = CUEN_Ano) = 0
And SC.CUEN_CodCta Not In (Select Distinct CUEN_CodCta From DetVoucher
Where CUEN_CodCta Between @CuentaIni And @CuentaFin And CUEN_Ano = @Ano And
CABV_Mes = @Mes)
Group by SC.CUEN_CodCta) A Inner Join Cuentas C On A.CUEN_CodCta =
C.CUEN_CodCta And C.CUEN_Ano = @Ano
Order by A.CUEN_CodCta
Leer las respuestas