SQL最大聚合VS.手动计算

  • 本文关键字:计算 VS SQL sql-server tsql
  • 更新时间 :
  • 英文 :


我注意到了我们的生产代码中的一些东西,这确实使我失望了。我们有一个数据表,该数据表拥有与我们联系的一年。可以说,它可以追溯到90年代末。

我们有一个查询,该查询计算上一年以在同一查询中的其他未来计算中使用。看起来这样:

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

这似乎是一种非常令人费解的方式...不确定为什么这个人不这样做:

@PrevYear = @CurrYear - 1

我在查询性能的角度提出了更多要求。哪个更快?为什么要计算上一年这么多代码?

我相信他要么没有想到另一种方法,要么希望@PrevYear代表您与您联系的最后一年(假设2015年没有数据,然后@PrevYear应该是2014年。

在性能方面,您的建议应该更快,因为它是对参数的计算。很难说它们之间是否有任何区别,取决于表格,索引等的大小。

最新更新