Sql 与第条及;临时桌子?
用外行的话说,WITH子句和临时表之间的主要区别是什么 在哪种情况下,使用其中一种比使用另一种更好 子句通常用于select查询,当您必须对包含复杂子句(如Sql 与第条及;临时桌子?,sql,amazon-redshift,data-warehouse,temp-tables,with-clause,Sql,Amazon Redshift,Data Warehouse,Temp Tables,With Clause,用外行的话说,WITH子句和临时表之间的主要区别是什么 在哪种情况下,使用其中一种比使用另一种更好 子句通常用于select查询,当您必须对包含复杂子句(如HAVING)的两个子查询执行某些联接时(尽管不一定)。一般来说,WITH子句只能在SELECT语句中使用 但在必须对数据进行操作的情况下,这意味着您希望在某些条件下更改数据,甚至希望根据您更愿意遵循的某些复杂条件再次删除某些行。虽然大多数情况下可以通过和来实现,但通常需要一些复杂的逻辑,在TEMP表中,您可以使用两个不同的SQL语句来实现相
HAVING
)的两个子查询执行某些联接时(尽管不一定)。一般来说,WITH
子句只能在SELECT
语句中使用
但在必须对数据进行操作的情况下,这意味着您希望在某些条件下更改数据,甚至希望根据您更愿意遵循的某些复杂条件再次删除某些行。虽然大多数情况下可以通过和
来实现,但通常需要一些复杂的逻辑,在TEMP
表中,您可以使用两个不同的SQL语句来实现相同的功能
此外,TEMP
表通常用作暂存表,而不是SELECT
查询的视图,也就是说,TEMP
表用于从S3
加载大量数据时,您可能需要将数据加载到TEMP表中,分析数据,删除冗余并最终一次性将其合并到原始表中
虽然
TEMP
表格仅在当前会话中是暂时的,但始终会重新评估WITH
主要区别在于临时表是存储表。CTE更类似于视图,可以帮助您以更易于阅读、更符合逻辑的方式表达SQL。表和视图之间也存在相同的差异,因为表可以让您以高效的方式完成任务
如果您正在构建一个非常复杂的查询或需要分阶段构建的查询,WITH子句/CTE将帮助您做到这一点。但是,如果您希望在表中存储数据以提高性能,那么最好使用临时表。
类似地,可以重复使用临时表,因此如果在多个查询中使用相同的代码,则可以考虑临时表而不是CTE。密钥差异:必须在关联查询中直接使用OFF子句。对于临时表,您可以在会话期间使用它们。所以,他们的寿命是不同的。