sql - 与具有比原始表更少的列的临时表的联接是否比与原始表的联接更快?
问题描述
请记住,Redshift 是一个列式数据库服务器,假设我有一个包含 50 列的表 A,我需要将它与表 B 连接,但在最终连接结果中我只需要表 A 中的 10 列。假设表 C 是从表 A 创建的临时表,其中包含我需要的 10 列。
- [表C加入表B]会比[表A加入表B]快吗
- 假设表 A 本身是一个临时表(从其他表派生),您对 #1 的响应是否仍然成立?
解决方案
除了单独存储列之外,Redshift 还有其他优化。
也就是说,我希望引用单个表中的所有 10 列与引用具有更多列的表中的 10 列之间的性能非常相似。很难想到会受到未引用列影响的优化。
我不明白问题的第二部分。表就是表,无论是否是临时的。如果您的意思是“临时表和运行子查询/CTE 之间是否存在性能差异?”。那么是的,肯定有区别。例如,在创建表、存储数据和重新读取数据方面存在开销。另一方面,优化器可能会为临时表选择更好的执行计划——这不是典型的,但它确实发生了。
推荐阅读
- php - 原则 2:QueryBuilder 加入子查询
- python - 如何为多个 Django 视图提供表单
- amazon-web-services - 如何一次更改多个 EC2 实例的入站规则?
- java - 转储 http 标头 - Axis 1.4
- go - go 错误的 icmp cksum
- javafx - 如何在 JavaFX 中重置 ComboBox 滚动位置?
- algorithm - 如何优化我对 HackerRank 的最大矩形问题的解决方案?
- c++ - Clang sanitizers 缺少未初始化内存的读取
- r - 错误消息:“x”和“y”必须具有相同的长度
- ohif - OHIF 中未显示测量值