5
大規模なデータセットでの時間ごとのグループ化
MS SQL 2008を使用して、250万件のレコードから平均フィールドを選択しています。各レコードは1秒を表します。MyFieldは、これらの1秒のレコードの1時間ごとの平均です。もちろん、サーバーのCPUが100%に達し、選択に時間がかかりすぎます。SQLが各リクエストでこれらのレコードをすべて選択する必要がないように、これらの平均値を保存する必要があります。何ができますか? SELECT DISTINCT CONVERT(VARCHAR, [timestamp], 1)+' '+ CAST(DATEPART(Hh,[timestamp]) as VARCHAR) AS TimeStampHour, MIN([timestamp]) as TimeStamp, AVG(MyField) As AvgField FROM MyData WHERE TimeStamp > '4/10/2011' GROUP BY CONVERT(VARCHAR, [timestamp], 1)+' '+ CAST(DATEPART(Hh,[timestamp]) as VARCHAR) ORDER BY TimeStamp
12
sql-server
query