SQL MAX聚合VS.手动计算

时间:2016-12-27 15:05:36

标签: sql-server tsql

我注意到了我们的生产代码中的一些内容,它真的让我失望了。我们有一个数据表,其中有人与我们联系的那一年。可以说它可以追溯到90年代末。

我们有一个查询计算上一年用于同一查询中的其他未来计算。它看起来像这样:

@CurrYear = 2016

select  @PrevYear = max(Year)
from    x
where   x.Year < @CurrYear

这似乎是一种非常复杂的方式......不知道为什么这个人没有这样做:

@PrevYear = @CurrYear - 1

我在查询性能方面更多地问这个问题。哪个更快?为什么要计算上一年的代码呢?

1 个答案:

答案 0 :(得分:3)

我相信他要么没有想到另一种方法,要么@PrevYear代表您联系的最后一年(让我们说2015年没有数据) ,那么@PrevYear应该是2014年。

就性能而言,您的建议应该更快,因为它是对参数的计算。很难说它们之间是否存在差异,取决于表格的大小,索引等。