CTE和传统子查询通常会创建可比较的查询计划

时间:2015-02-06 02:44:20

标签: sql-server common-table-expression

进行以下查询。

;WITH CTE AS(
    SELECT
        *,
        RowNumber = ROW_NUMBER() OVER(PARTITION BY Field1, Field2 ORDER BY Field3 DESC)
    FROM Table)
SELECT * 
FROM CTE 
WHERE RowNumber  <= 3
ORDER BY Field1,RowNumber DESC

SELECT 
    *
FROM
(
    SELECT
        *,
        RowNumber = ROW_NUMBER() OVER(PARTITION BY Field1, Field2 ORDER BY Field3 DESC)
    FROM Table
)AS X
WHERE 
    X.RowNumber <= 3
ORDER BY 
    Field1,
    RowNumber DESC

我知道cte的一些优点,包括压缩代码,精细子查询的可读性和使用递归等的技术等。

话虽如此,关于编译/优化这两个查询是否相同?

0 个答案:

没有答案