窗口函数在sql的操作顺序中位于何处?

时间:2018-06-28 16:52:40

标签: sql sql-server

我正在寻找窗口函数在sql中发生的时间。 我知道它们可以在SELECTORDER BY子句中使用,因此我倾向于认为它们会在ORDER BY之后但在TOP

之前发生

1 个答案:

答案 0 :(得分:1)

窗口函数在优化程序决定应发生时发生。最好看一下查询计划。

SQL Server advertises the logical processing of queries.(尤其是)用于解释作用域规则。 这与查询的实际执行方式无关。

很明显,窗口函数的规则是:

  • 效果是在处理FROMWHEREGROUP BYHAVING子句之后的
  • 效果与ORDER BY无关(即使您使用order by (select null)))。
  • TOP不会影响处理。
  • 处理过程在SELECT DISTINCT之前进行。

我认为结论是,与这些子句中的其他表达式一样,它们在SELECTORDER BY中进行了解析。他们没有单独的地方。