Over Partition By
とGroup By
の違いについて、すでに2つの質問がSOに掲載されていますが、どちらが優れているかについての決定的な結論は見つかりませんでした。オーバーパーティションとグループの間のSQL Serverパフォーマンスの比較
私はsimple scenario at SqlFiddleを設定しました。ここでOver (Partition By)
はより良い実行計画を誇っています(しかし、私はあまりよく知らない)。
テーブル内のデータ量がこれを変更する必要がありますか? Over (Partition By)
は最終的に性能が向上しますか?
私はあなたが何を得ているのか分かりません。もちろん、 'by by by by group by 'と' group by'の間には類似点がありますが、ユースケースの異なる2つの異なる操作です。なぜ、第二の実行計画がより良くなると考えていますか?両方とも同じクラスタード・インデックス・スキャンを実行する必要がありますが、2番目のクラスターは比較的時間がかかりませんので、明らかに全体的に長くなります。 – Luaan
誰かが他より優れたパフォーマンスを発揮するという普遍的なルールはありません。パフォーマンス*目標*を設定して、手元の問題を解決する簡単なコードを記述します。その後、パフォーマンスを測定します。パフォーマンスが許容できない場合にのみ、変更を検討する必要があります。しかし、クエリが*正しい*ならば、それはもっと可能性が高い。インデックスはこれらの2つの間で変化するよりも変化する必要があります。 (もし*が普遍的に他のものよりも優れていれば、2つの方法の間で機械的にクエリを変換することが可能だったならば、オプティマイザはすでにそれを実行していたでしょう) –
@Luaan:私の観点から見ると、何かをして同じ結果を得ると、それはすべて沸騰します。ある方法は他の方法よりも優れた性能を発揮しますか?もしそうでなければ、私はより一般的なGroup Byの方法に固執するでしょう。同僚が** over **と選択された選択肢を提供しました。私は今これについて学んでいます。 – Veverke