11

Over Partition Byとの違いについていくつかの質問がすでに SO に投稿されていましたが、Group Byどちらがより優れているかについての決定的な結論は見つかりませんでした。

SqlFiddleで簡単なシナリオを設定しましたがOver (Partition By)、より優れた実行計画を誇っているようです (ただし、私はそれらにあまり慣れていません)。

テーブル内のデータの量はこれを変更することになっていますか? Over (Partition By)その後、最終的にパフォーマンスが向上しますか?

ここに画像の説明を入力

ここに画像の説明を入力

4

1 に答える 1

3

ウィンドウ関数の実行計画は、group by の実行計画よりも明らかに劣っています (実行計画によるグループ全体が、ウィンドウ関数の実行計画の右上に含まれています)。一般に、SQL は over 句を使用するよりも group by に対して最適化されていますが、それぞれに用途があります。たとえば、グループの合計を含む各エントリの行を出力したい場合は、おそらくウィンドウ処理の方が理にかなっています (例: A.id|B.b1|sum B.b1 over A.id)。あなたがしないので、それは本当にありません。基本的に、group by が意味する個別を使用するだけでなく、group by を使用してから、distinct を再度使用しています。

于 2015-09-08T13:48:00.513 に答える