Trenger du å forbedre ytelsen til SQL-spørring ved hjelp av samlede funksjoner

Jeg har et bestemt SQL-spørsmål som ser ut til å lide av et mystisk ytelsesproblem. Her er spørringen:

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'

Problemet her er at denne spørringen kjører veldig raskt (0:00 til 0:02) når den kjøres i en 5-dagers periode, men veldig sakte (1:20 til 1:45) for en 6 dagspenn.

Det er omtrent 105 000 poster per dag i tabellene (MyFirstTable og Table2011).

Spørsmålet mitt : Er det en øvre grense for antall rader du kan passere en samlet funksjon før du ser et alvorlig ytelsesproblem i SQL Server? (bruker for øyeblikket 2008 R2)

7
задан OMG Ponies 15 August 2011 в 14:36
поделиться