《T-SQL性能调优秘笈——基于SQL Server 2012 窗口函数》——1.5 潜在的额外筛选器...

    xiaoxiao2024-05-08  7

    本节书摘来自异步社区出版社《T-SQL性能调优秘笈——基于SQL Server 2012 窗口函数》一书中的第1章,第1.5节,作者: 【美】Itzik Ben-Gan,更多章节内容可以访问云栖社区“异步社区”公众号查看。

    1.5 潜在的额外筛选器

    T-SQL性能调优秘笈——基于SQL Server 2012 窗口函数上面提供T-SQL中的一个变通方法,它可以在不直接支持窗口函数的查询元素里,间接地使用窗口函数。这个变通的方法就是CTE形式的表表达式或派生表。有变通方法当然很好,但表表达式给查询增加了一个层次,也增加了其复杂性。我展示的那些示例都很简单,但可以想象一下,如果本身的查询已经很长和复杂,这样做确实会增加难度。是否有更简单的方法,无须增加查询的层次就可达到目的?

    对于窗口函数,SQL Server目前还没有解决方案。不过有趣的是看看其他系统是如何应对这个难题。例如,Teredata,它创建了一个称为QUALIFY的过滤子句,在SELECT子句之后进行概念性评估。这意味着它可以直接指向窗口函数,如下面的示例:

    更进一步,可以指向SELECT列表定义的列的别名,如下所示:

    标准SQL没有定义QUALIFY子句;它是Teredata特有的特性。这个解决方案看起来很不错,如果在标准SQL和SQL Server中都有类似的解决方案就好了。

    本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。

    相关资源:敏捷开发V1.0.pptx
    最新回复(0)