首页 > 解决方案 > 在什么用例中您会使用 CTE 而不是临时表

问题描述

我几乎在每种情况下都使用临时表,当人们向我提起 CTE 时,它通常是 CTE 的用途。CTE 优于其他方法的用途是什么?至于可读性,CTE 现在是可维护代码的最佳实践吗?

标签: sqlsql-servercommon-table-expression

解决方案


临时表会产生写入和读取数据的开销。这样做有两个好处:

  • 它们可以用于多个查询。
  • 优化器对它们有很好的信息,即大小。

另一方面,CTE仅在一个查询中可用——这有时很方便。他们可以简化单个查询——并将所有逻辑放在一起。与子查询不同,CTE 可以在查询中多次引用。与临时表不同,优化器可以找出将逻辑合并到查询中的最佳方式。

CTE 还具有临时表无法做到的一件事:递归 CTE 需要在脚本语言中循环。


推荐阅读