11

Over Partition By尽管 SO 中已经发布了一些关于和之间区别的问题Group By,但我没有找到关于哪个表现更好的明确结论。

我在 SqlFiddle设置了一个简单的场景,Over (Partition By)似乎拥有更好的执行计划(但是我对它们不太熟悉)。

表中的数据量是否应该改变这一点?Over (Partition By)那么最终表现会更好吗?

在此处输入图像描述

在此处输入图像描述

4

1 回答 1

3

窗口函数的执行计划明显不如group by的执行计划(整个group by执行计划包含在窗口函数执行计划的右上方)。一般来说,SQL 比使用 over 子句更适合 group by,但是每个子句都有其用途。例如,如果您想为每个条目输出一行以及该组的总和,那么开窗可能更有意义(例如A.id|B.b1|sum B.b1 over A.id)。既然你没有,那就真的没有。您基本上是在使用 group by,然后再次使用 distinct,而不是仅使用 group by 所暗示的 distinct。

于 2015-09-08T13:48:00.513 回答