jin*_*ing 7 t-sql sql-server performance
在我的SQL Server查询中,我尝试获取2秒范围的数据:
DECLARE @runtime AS datetime
SELECT @runtime = '2014-02-15 03:34:17'
SELECT Application FROM commandcip
WHERE
commandname = 'RunTestCase' AND
(createdate BETWEEN DATEADD(s, -1, @runtime) AND DATEADD(s, 1, @runtime))
Run Code Online (Sandbox Code Playgroud)
此命令非常慢,需要几分钟,基于性能分析器的估计子树成本为2800.
另一方面,如果我手动计算范围,则查询非常快(估计子树成本 = 0.5,查询时间<1秒):
SELECT Application FROM commandcip
WHERE
commandname = 'RunTestCase' AND
createdate BETWEEN '2014-02-15 03:34:16' AND '2014-02-15 03:34:18'
Run Code Online (Sandbox Code Playgroud)
我验证了两个命令都返回了正确的数据.我验证了我的DATEADD
命令返回正确的日期.我也试图让DATEADD
一步迟早(成独立的变量@mindate
,@maxdate
),但它并没有帮助.
如何在不手动计算范围的情况下加速第一次查询?