【发布时间】:2015-08-31 11:42:28
【问题描述】:
我有一个简单的 SQL 查询来计算过去 24 小时内客户端的遥测记录数。
使用 TimeStamp 上的索引,以下查询在不到 1 秒的时间内运行大约 10k 行
select MachineName,count(Message) from Telemetry where TimeStamp between DATEADD(HOUR,-24, getutcdate()) and getutcdate() group by MachineName
但是,当我尝试使硬编码的 -24 可配置并添加一个变量时,执行查询需要超过 5 分钟。
DECLARE @cutoff int; SET @cutoff = 24
select MachineName,count(Message) from Telemetry where TimeStamp between DATEADD(HOUR, -1*@cutoff, getutcdate()) and getutcdate() group by MachineName
性能显着下降有什么具体原因吗?在不影响性能的情况下添加变量的最佳方法是什么?
【问题讨论】:
标签: sql-server performance timestamp