WITH子句和临时表之间有什么区别?

rol*_*ice 3 sql data-warehouse temp-tables with-clause amazon-redshift

用外行术语来说,WITH子句和临时表之间的主要区别是什么?

在哪种情况下最好使用一种?

Sar*_*009 5

WITH通常,当您必须对几个包含复杂子句(例如HAVING(不一定))的子查询执行某些联接时,通常在选择查询中使用该子句。一般来说,WITH子句只能在SELECT语句中使用。

但是,在必须操纵数据的情况下,这意味着您希望根据某种复杂的条件在某种情况下更改数据,甚至想再次删除某些行TEMP TABLE。尽管大多数情况下要实现WITH它通常要付出一些复杂逻辑的代价,但是在TEMP表中您可以有几个不同的SQL语句来实现相同的目的。

另外,TEMP表通常用作临时表,而不是用于SELECT查询的视图,即TEMP当您要从中加载大量数据时S3,可以使用表,您可能希望将数据加载到临时表中,分析数据,消除冗余,最后一次性将其合并到原始表中。

虽然TEMP表仅对于当前会话是瞬态的,但WITH始终会对其进行重新评估。