2016-12-27 5 views
1

私は生産コードで何か気づき、本当に私を捨てました。誰かが私たちと連絡を取った年があるデータテーブルがあります。それは90年代後半に戻ると言います。SQL MAX集計VS.マニュアル計算

私たちには、同じクエリ内の他の将来の計算で使用する前年を計算するクエリがあります。それは次のようになります。

@CurrYear = 2016 

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

これは非常に複雑な方法のように思える...わからないなぜdidntはこの人:

@PrevYear = @CurrYear - 1 

私は、クエリのパフォーマンスの観点では、この多くを求めています。どちらが速いの?なぜ前の年を計算するために非常に多くのコードですか?

+0

に依存 – dfundako

+6

作者は、@PrevYear = @CurrYear - 1'を使ったことはありませんでした。作者が正しく、間違って信じていたからです。数年は欠けているかもしれません。 –

+1

クエリはデータ*を持つ前年*を引き出しています。確かに、今年から1を減算することができますが、データが添付されている前年を引っ張ることが意図されていたと思います。データを見ることなく、それは私が言うことができるすべてです。 「どちらが速いの?」 - 1を引く。「正しいですか?」 - わかりません。何が使用されているかによって異なります。 – Siyual

答えて

3

私は彼が別の方法を考えていなかったと思うか、@PrevYearがあなたに連絡した最後の年を表してほしいと思っています(2015年のデータがないといいます)。@PrevYearは2014年です。それはパラメータの計算があるとして、性能の面では

、あなたの提案が速くなければなりません。それらの間に違いがあるかどう言うのは難しいです、テーブル、インデックスのサイズとなど

+0

ありがとう、サギ。私は上記のコメントを書いた。まれなケースがいくつかありますが、1年が欠けている可能性があります。私たちのIT部門の非常に前向きな考え方。 – Tyler