我知道这是一个常见问题,但大多数人都会问这两者之间的表现。 我要求的是cte和temp表的用例,以便更好地理解它们的用法
答案 0 :(得分:0)
使用临时表,您可以使用CONSTRAINT's
和INDEX's
。您还可以在临时表上创建CURSOR
,其中CTE在查询结束后终止(强调单个查询)。
我将通过具有我经验的应用程序的具体用例来回答,以帮助解决我的观点。
我使用的示例企业应用程序中的常见用例如下:
临时表
通常,我们使用临时表来在需要多个查询的相应表格中的INSERT
或UPDATE
之前转换数据。从多个表中收集类似数据,以便操作和处理数据。
有不同类型的订单(order_type1,order_type2,order_type3),所有订单都在不同的TABLE's
上,但具有相似的COLUMN's
。我们有一个STORED PROCEDURE
UNION's
所有这些表放入一个#orders
临时表和UPDATE's
个人建议的订单,具体取决于现有订单。
<强>的CTE 强>
在处理单个查询时,CTE对于可读性非常棒。在使用PIVOT's
,Aggregates
等创建需要使用大量代码行进行分析的报表时,CTE通过将大量查询分成逻辑部分来提供可读性。
有时两者都有。当需要多个查询时。使用CTE分解其中一些查询仍然很有用。
我希望这有用,欢呼!