首页 > 解决方案 > 与具有比原始表更少的列的临时表的联接是否比与原始表的联接更快?

问题描述

请记住,Redshift 是一个列式数据库服务器,假设我有一个包含 50 列的表 A,我需要将它与表 B 连接,但在最终连接结果中我只需要表 A 中的 10 列。假设表 C 是从表 A 创建的临时表,其中包含我需要的 10 列。

  1. [表C加入表B]会比[表A加入表B]快吗
  2. 假设表 A 本身是一个临时表(从其他表派生),您对 #1 的响应是否仍然成立?

标签: sqldatabaseamazon-redshift

解决方案


除了单独存储列之外,Redshift 还有其他优化。

也就是说,我希望引用单个表中的所有 10 列与引用具有更多列的表中的 10 列之间的性能非常相似。很难想到会受到未引用列影响的优化。

我不明白问题的第二部分。表就是表,无论是否是临时的。如果您的意思是“临时表和运行子查询/CTE 之间是否存在性能差异?”。那么是的,肯定有区别。例如,在创建表、存储数据和重新读取数据方面存在开销。另一方面,优化器可能会为临时表选择更好的执行计划——这不是典型的,但它确实发生了。


推荐阅读