公用表表达式 (CTE) 和临时表有什么区别?我什么时候应该使用其中一个?
CTE
WITH cte (Column1, Column2, Column3) AS ( SELECT Column1, Column2, Column3 FROM SomeTable ) SELECT * FROM cte
Temp Table
SELECT Column1, Column2, Column3 INTO #tmpTable FROM SomeTable SELECT * FROM #tmpTable
这是相当广泛的,但我会尽可能地给你一个笼统的答案。
CTE…
VIEW
#*Temp Tables…*
至于何时使用它们,它们有非常不同的用例。如果您将有一个非常大的结果集,或者需要多次引用它,请将其放在一个#temp表中。如果它需要是递归的,是一次性的,或者只是为了在逻辑上简化某些东西,aCTE是首选。
#temp
此外, a永远不CTE应该用于 performance。使用 CTE 几乎永远不会加快速度,因为它只是一次性视图。你可以用它们做一些巧妙的事情,但加速查询并不是其中之一。