什么时候使用 cte 和 temp table?
When to use cte and temp table?
我知道这是一个常见问题,但人们最常问的是这两者之间的性能。
我要的是cte和temp的用例table,为了更好地理解它们的用法
对于温度 table,您可以使用 CONSTRAINT's
和 INDEX's
。您还可以在临时 table 上创建 CURSOR
,其中 CTE 在查询 结束后终止 (强调单个查询)。
我将通过我曾使用过的应用程序的具体用例来回答,以帮助我的观点。
我使用的示例企业应用程序中的常见用例如下:
临时表
一般情况下,我们使用temp tables是为了在INSERT
或UPDATE
之前在适当的tables及时转换需要不止一个查询。从多个 table 收集相似数据,以便操作和处理数据。
有不同类型的订单(order_type1、order_type2、order_type3),它们都在不同的 TABLE's
但具有相似的 COLUMN's
。我们有一个 STORED PROCEDURE
,UNION's
所有这些 table 变成一个 #orders
临时 table 和 UPDATE's
一个人根据现有订单建议的订单。
CTE
CTE 在处理单个查询时的可读性 非常棒。当创建需要使用 PIVOT's
、Aggregates
等分析大量代码行的报告时,CTE 通过能够将巨大的查询分成逻辑部分来提供可读性。
有时两者兼而有之。当需要 多个查询时 。用 CTE 分解其中一些查询仍然有用。
希望对您有所帮助,干杯!
我知道这是一个常见问题,但人们最常问的是这两者之间的性能。 我要的是cte和temp的用例table,为了更好地理解它们的用法
对于温度 table,您可以使用 CONSTRAINT's
和 INDEX's
。您还可以在临时 table 上创建 CURSOR
,其中 CTE 在查询 结束后终止 (强调单个查询)。
我将通过我曾使用过的应用程序的具体用例来回答,以帮助我的观点。
我使用的示例企业应用程序中的常见用例如下:
临时表
一般情况下,我们使用temp tables是为了在INSERT
或UPDATE
之前在适当的tables及时转换需要不止一个查询。从多个 table 收集相似数据,以便操作和处理数据。
有不同类型的订单(order_type1、order_type2、order_type3),它们都在不同的 TABLE's
但具有相似的 COLUMN's
。我们有一个 STORED PROCEDURE
,UNION's
所有这些 table 变成一个 #orders
临时 table 和 UPDATE's
一个人根据现有订单建议的订单。
CTE
CTE 在处理单个查询时的可读性 非常棒。当创建需要使用 PIVOT's
、Aggregates
等分析大量代码行的报告时,CTE 通过能够将巨大的查询分成逻辑部分来提供可读性。
有时两者兼而有之。当需要 多个查询时 。用 CTE 分解其中一些查询仍然有用。
希望对您有所帮助,干杯!