我注意到了我们的生产代码中的一些内容,它真的让我失望了。我们有一个数据表,其中有人与我们联系的那一年。可以说它可以追溯到90年代末。
我们有一个查询计算上一年用于同一查询中的其他未来计算。它看起来像这样:
@CurrYear = 2016
select @PrevYear = max(Year)
from x
where x.Year < @CurrYear
这似乎是一种非常复杂的方式......不知道为什么这个人没有这样做:
@PrevYear = @CurrYear - 1
我在查询性能方面更多地问这个问题。哪个更快?为什么要计算上一年的代码呢?
答案 0 :(得分:3)
我相信他要么没有想到另一种方法,要么@PrevYear
代表您联系的最后一年(让我们说2015年没有数据) ,那么@PrevYear
应该是2014年。
就性能而言,您的建议应该更快,因为它是对参数的计算。很难说它们之间是否存在差异,取决于表格的大小,索引等。