我注意到了我们的生产代码中的一些东西,这确实使我失望了。我们有一个数据表,该数据表拥有与我们联系的一年。可以说,它可以追溯到90年代末。
我们有一个查询,该查询计算上一年以在同一查询中的其他未来计算中使用。看起来这样:
@CurrYear = 2016
select @PrevYear = max(Year)
from x
where x.Year < @CurrYear
这似乎是一种非常令人费解的方式...不确定为什么这个人不这样做:
@PrevYear = @CurrYear - 1
我在查询性能的角度提出了更多要求。哪个更快?为什么要计算上一年这么多代码?
我相信他要么没有想到另一种方法,要么希望@PrevYear
代表您与您联系的最后一年(假设2015年没有数据,然后@PrevYear
应该是2014年。
在性能方面,您的建议应该更快,因为它是对参数的计算。很难说它们之间是否有任何区别,取决于表格,索引等的大小。