不思議なパフォーマンスの問題を抱えている特定の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'
ここでの問題は非常にゆっくりと5日間のスパンのために実行したときに、このクエリは非常に迅速に(午前0時02分まで0時00分)走るということですが、(1:45 1:20 )を6日間延長した。
テーブル(MyFirstTableおよびTable2011)には、1日あたり約105,000レコードがあります。
私の質問:あなたは、SQL Serverのパフォーマンスに重大な問題を参照してくださいする前にあなたは、集計関数を渡すことができます行の数に上限はありますか? (現在2008 R2を使用しています)
最新の統計情報ですが、最近インデックスを再構築してもらえますか? –
あなたのようなサウンドは、メモリ内の操作からディスクを必要とするものにあふれているかもしれません。私はMySQLチューニングの詳細に慣れていませんが、一時的なワークスペース用のメモリ割り当てパラメータがある場合は、それを増やすことができます。 –
@Jim:not mySQL ... –