Código SQL:
Ver originalSELECT L.numero, L.tarifa, CONVERT(DATETIME,CONVERT(VARCHAR(10), L.fechahora, 121),121) AS fechahora, MAX(L.Potencia) AS Potencia
FROM Lector L WITH(NOLOCK)
WHERE CONVERT(DATETIME,CONVERT(VARCHAR(10),FechaHoraIncorporacion, 121), 121) BETWEEN
CONVERT(DATETIME,CONVERT(VARCHAR(10), '''+@fechaDesde+''', 121), 121) AND
CONVERT(DATETIME,CONVERT(VARCHAR(10), '''+@fechaHasta+''', 121), 121)
GROUP BY L.numero, L.tarifa, CONVERT(DATETIME,CONVERT(VARCHAR(10), L.FechaHora, 121),121)
Las conversiones que haces en el where afectan el rendimiento de esta consulta ya que al hacer el convert ya no usa los indices de la tabla
Haces un:
Código SQL:
Ver originalCROSS APPLY dbo.f_fecha_max_potencia(CONVERT(DATETIME,CONVERT(VARCHAR(10), P.fechahora, 121),121)
Eso indica que por cada valor de la tabla va a mandar llamar a la funcion, ahora tienes un cursor, ese para que es?