我收到了关于我们的打印标签软件中令人难以置信的缓慢查询的索赔。使用 SQL Profiler,我得到了违规查询并开始在性能非常差的 SSMS 中进行测试(大约00:50:00)。查询很长,表很大,但是有一个
WHERE
...
fieldX > {ts '2016-01-01 00:00:00} /* fieldX is a DATETIME */
...
我改为
WHERE
...
fieldX > DATEADD(YYYY, -1, GETDATE())
...
现在执行时间显示为00:00:00 !!
我只想明白为什么?
我建议(最初,在评论中)HEDMON 尝试一些不同的日期。由于他的测试日期和生产日期不同,因此似乎可能存在日期选择性问题;SQL 返回数据的速度比返回旧日期快得多。
HEDMON 确实尝试过,并发现(从他的评论中)日期从 2017-02-25 开始的响应很快,而早于该日期的响应速度较慢。
有了这个,他觉得日期的表示(使用
{ts }
语法)与问题无关。