我有一个特殊的SQL查询,似乎遭受了一个神秘的性能问题。下面是该查询:需要使用聚合函数来提高SQL查询的性能
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'
这里的问题是,这个查询运行速度很快(0:00至0:02),当5天跨度运行,但速度很慢(1:20至1:45 )为期6天。
表中每天约有105,000条记录(MyFirstTable和Table2011)。
我的问题:有没有上限,你看到在SQL Server中的一个严重的性能问题之前,你可以通过聚合函数的行数? (目前使用的是2008 R2)
是您的统计数据,您是否最近重新编制了索引? –
您的声音可能会从内存操作溢出到需要磁盘的操作。我不熟悉MySQL调优细节,但是如果有临时工作区的内存分配参数,可以尝试增加它。 –
@Jim:它不是mySQL ... –