我有一张桌子,它在不断更新30秒天气数据。来自我的天气传感器的数据最终以UTC时间戳最终存储在SQL Server中。
我希望能够在DailySummary
表中汇总这些高频数据,但是我希望这些天代表我的本地时区(中央标准时间)而不是UTC。我在本地时间的高频表中添加了一个计算列,以帮助解决此问题:
((([TmStamp] AT TIME ZONE 'UTC') AT TIME ZONE 'Central Standard Time'))
就目前而言,由于它不确定性,所以我不能将其设为PERSISTED
列。夏令时也可以,春季给我23个小时,秋天给我25个小时。
在我的摘要视图上:
SELECT
DATEADD(DAY, 0, DATEDIFF(day, 0, TmStamp_Local)) AS CalDate,
MAX(AirTemp_Avg) AS HighTemp,
MIN(AirTemp_Avg) AS LowTemp,
AVG(AirTemp_Avg) AS AvgTemp
FROM
dbo.DL_MAIN_Weather
GROUP BY
DATEADD(DAY, 0, DATEDIFF(day, 0, TmStamp_Local))
这有效,但相对较慢(我最终将在此视图中添加更多列)。由于历史天气数据不会改变(除非我需要手动更正值),因此每次需要时重新计算此表似乎效率低下。
关于如何加快速度并可能对其进行索引的任何想法?
我正在使用Microsoft SQL Server 2017。