什么时候使用 cte 和 temp table?

When to use cte and temp table?

我知道这是一个常见问题,但人们最常问的是这两者之间的性能。 我要的是cte和temp的用例table,为了更好地理解它们的用法

对于温度 table,您可以使用 CONSTRAINT'sINDEX's。您还可以在临时 table 上创建 CURSOR,其中 CTE 在查询 结束后终止 (强调单个查询)。

我将通过我曾使用过的应用程序的具体用例来回答,以帮助我的观点。

我使用的示例企业应用程序中的常见用例如下:


临时表

一般情况下,我们使用temp tables是为了在INSERTUPDATE之前在适当的tables及时转换需要不止一个查询。从多个 table 收集相似数据,以便操作和处理数据。

有不同类型的订单(order_type1、order_type2、order_type3),它们都在不同的 TABLE's 但具有相似的 COLUMN's。我们有一个 STORED PROCEDUREUNION's 所有这些 table 变成一个 #orders 临时 table 和 UPDATE's 一个人根据现有订单建议的订单。

CTE

CTE 在处理单个查询时的可读性 非常棒。当创建需要使用 PIVOT'sAggregates 等分析大量代码行的报告时,CTE 通过能够将巨大的查询分成逻辑部分来提供可读性。


有时两者兼而有之。当需要 多个查询时 。用 CTE 分解其中一些查询仍然有用。


希望对您有所帮助,干杯!