Hola que tal, tengo el sig el problema en el store procedure tengo el sig. codigo, el problema es el sguiente cuando hago la consulta por rango de fechas de manera directa que es la linea que tengo comentada en la clausula WHERE lo hace rapido pero cuando le paso las variables de tipo date y convierto el campo como tipo de date que es la sig linea de codigo que no esta comentada se tarda muchisimo mas tiempo, con el mismo rango de fechas si alguien me podria ayudar se los agradecere gracias
Declare @dFechaIni date,
@dFechaFin date
set @dFechaIni =CONVERT(DATE,DATEADD(MONTH, -1, GETDATE()),103)
set @dFechaFin =CONVERT(DATE,GETDATE(),103)
Declare @dFechaIniD2 DATE,
@dFechaFinD2 DATE
set @dFechaIniD2=@dFechaIni
set @dFechaFinD2 =@dFechaFin
SELECT @dFechaIniD2
SELECT @dFechaFinD2
SELECT
NOP.IDNumOficioProgramas, -- idNumOficioPrograma,
ISNULL(NOP.sNumOficio,'SIN NÚMERO'), -- [Nombre o Número Plan],
NOP.sTipoPrograma, -- [Programa],
PD.sClave, -- [Clave],
C.sTipo, -- [Sub Almacén]
ISNULL(PD.ICANTIDAD,0), -- [Piezas Embarcadas],
NOP.iCantidadOriginalSinRedondeo, -- [Piezas Solicitadas],
PDETO.ICANTIDAD, -- [PiezasPlaneadas]
ISNULL(PD.ICANTIDAD-NOP.iCantidadOriginalSinRedondeo,0), -- [Diferencia],
CASE C.sTipo
WHEN 'MEDICAMENTO' THEN '100-'
WHEN 'MATERIAL DE CURACION' THEN '200-'
WHEN 'REFRIGERADO' THEN '300-'
WHEN 'CONTROLADO' THEN '400-'
WHEN 'ALTA ESPECIALIDAD' THEN '500-'
END + CAST(P.IDPedidos AS VARCHAR), -- [Pedido Mirafe],
ISNULL(PRAD.iCantidad,0), -- [Cantidad Recibida],
--PTT.IDRemision, -- [Folio ISSSTE Remisión],
--0, -- [Porcentaje Cumplimiento],
0, -- [SUMA SOLICITADAS ANTERIORES]
0 -- [SUMA PLANEADAS ANTERIORES]
from Pedidos [P]
INNER JOIN (
SELECT IDPEDIDOS, SCLAVE, SUM(ICANTIDAD) AS ICANTIDAD FROM PedidosDetalle
GROUP BY IDPedidos, sClave
) [PD] on PD.IDPedidos=P.IDPedidos
INNER JOIN (
SELECT IDPEDIDOS, SCLAVE, SUM(ICANTIDAD) AS ICANTIDAD
FROM PedidosDetalleOriginal
GROUP BY IDPedidos, sClave
) PDETO ON PDETO.IDPedidos=P.IDPedidos AND PDETO.sClave=PD.sClave
INNER JOIN Claves [C] on C.sClave=PD.sClave
INNER JOIN NumOficioProgramas as NOP on NOP.idpedidos=P.IDPedidos and NOP.sclave=PD.sClave
INNER JOIN (
select IDRemision as IDRemision, sTipo,MAX(IDODT) AS IDODT
from ODTDetalle
group by IDRemision, sTipo
) AS OD ON OD.idRemision=P.IDPedidos AND OD.sTipo=C.sTipo
INNER JOIN ODT ON ODT.IDODT=OD.IDODT
LEFT JOIN PedidosRecibidosANS [PRA] on PRA.IDPedidos=P.IDPedidos AND PRA.sTipo=C.sTipo --AND PRA.PreRecibido > 0
LEFT JOIN PedidosRecibidosANSDetalle [PRAD] on PRAD.IDPedidosRecibidosANS=PRA.IDPedidosRecibidosA NS AND PD.sClave = PRAD.sClave
WHERE P.IDCatalogoCategoriaPedidos in(2,4,5)
AND P.bPrograma = 'true'
--AND ODT.dfechaSalida between CONVERT(DATE,'2012-01-28') AND CONVERT(DATE,'2012-02-28')
AND CONVERT(DATE,ODT.dfechaSalida) between @dFechaIniD2 AND @dFechaFinD2
AND P.bCancelado=0
AND NOP.sNumOficio like 'DADAE%'