sql-server – CTE和临时表有什么区别?
发布时间:2020-12-30 20:16:41 所属栏目:MsSql教程 来源:网络整理
导读:公用表表达式(CTE)和临时表有什么区别?我何时应该使用另一个? CTE WITH cte (Column1,Column2,Column3)AS( SELECT Column1,Column3 FROM SomeTable)SELECT * FROM cte 临时表 SELECT Column1,Column3INTO #tmpTableFROM SomeTableSELECT * FROM #tmpTable
公用表表达式(CTE)和临时表有什么区别?我何时应该使用另一个? CTE WITH cte (Column1,Column2,Column3) AS ( SELECT Column1,Column3 FROM SomeTable ) SELECT * FROM cte 临时表 SELECT Column1,Column3 INTO #tmpTable FROM SomeTable SELECT * FROM #tmpTable 解决方法这是相当广泛的,但我会尽可能地给你一般答案.CTE的… >是不可索引的(但可以在引用的对象上使用现有索引) #Temp Tables … >是tempdb中存在的真实物化表 至于何时使用它们,它们具有非常不同的用例.如果您将拥有一个非常大的结果集,或者需要多次引用它,请将其放在#temp表中.如果它需要递归,是一次性的,或者只是为了简化逻辑上的东西,首选CTE. 此外,CTE绝不应该用于性能.你几乎不会通过使用CTE来加快速度,因为它再次只是一次性视图.你可以用它们做一些巧妙的事情,但加速查询并不是真正的问题之一. (编辑:上饶站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |