使用CTE,视图和子查询在性能上有什么不同吗?

时间:2018-10-12 03:35:58

标签: sql-server

SELECT查询是已知的另一个查询的中间结果,可以由CTE,视图或嵌套的SELECT查询(SELECT * FROM (SELECT ... ) a)编写。

现在,我想使用三种方法之一作为中间结果来构建查询。我的查询逻辑是否应该保持不变,使用三种方法之一构建查询时,性能是否有差异? (在构建期间,没有使用任何一种高级且特定的主题,例如递归CTE,索引视图,USING ...MERGE ...等,只是基本语法,但复杂性可能很高。)

2 个答案:

答案 0 :(得分:1)

答案是NO

CTE,视图和子查询取决于您的脚本结构。学习Techniques for improving the performance of SQL queries更好。

看看这个link

答案 1 :(得分:1)

CTE只是语法,因此从理论上讲它只是一个子查询。使用CTE和Subquery时可能不会获得任何性能差异。

我认为使用CTE的最大好处是可读性。这样一来,可以轻松查看将哪些查询用作子查询,然后很容易将它们联接到查询中,就像视图一样。

现在有关CTE和View Hope的内容,您可以阅读并了解适合您的内容。

CTE vs View Performance in SQL Server

SQL - CTE vs VIEW

这还取决于您如何设计查询和脚本结构。