Tengo una consulta SQL particular que parece sufrir un misterioso problema de rendimiento. Ésta es la consulta:Necesito mejorar el rendimiento de SQL Query usando funciones de agregado
SELECT COUNT(LengthOfTime) AS TotalTime,
SUM(LengthOfTime) AS TotalLength,
SUM(LengthOfTime)/COUNT(LengthOfTime) AS AverageTime,
SUM(Pops)/COUNT(LengthOfTime) AS AveragePop
FROM ((SELECT *
FROM (SELECT *, ID & YearRec AS ID2
FROM MyFirstTable
UNION ALL
SELECT *, ID & YearRec AS ID2
FROM Table2011) AS TEMP
WHERE STARTTIME >= '8/1/2011 00:00:00'
AND StartTime <= '8/5/2011 23:59:59') AS TEMP2
JOIN AppleTable ON TEMP2.Reason = AppleTable.Skills)
JOIN PeopleTable ON TEMP2.Operator = PeopleTable.Operators
WHERE AppleTable.[ON] = 1
AND PeopleTable.[ON] = 1
AND Rec_Type = 'SECRET AGENT'
El problema aquí es que esta consulta se ejecuta muy rápidamente (0:00 a 0:02) cuando se ejecuta por un lapso de 5 días, pero muy lentamente (01:20-01:45) para un lapso de 6 días.
hay aproximadamente 105.000 registros por día en las Tablas (MyFirstTable y Table2011).
Mi pregunta: ¿Hay un límite superior para el número de filas que puede pasar una función agregada antes de ver un problema de rendimiento grave en SQL Server? (Actualmente se utiliza 2008 R2)
son sus estadísticas actualizadas, ¿ha reconstruido índices recientemente? –
Parece que se está desbordando de una operación en memoria a una que requiere disco. No estoy familiarizado con los detalles de ajuste de MySQL, pero si hay un parámetro de asignación de memoria para el espacio de trabajo temporal, puede intentar aumentar eso. –
@Jim: no es mySQL ... –