【发布时间】:2019-12-05 05:06:54
【问题描述】:
我了解Teradata中SQL的操作顺序如下:
- FROM 子句
- WHERE 子句
- GROUP BY 子句
- HAVING 子句
- SELECT 子句
- ORDER BY 子句
这是来自this link。
这是否意味着我要加入的表中的任何额外的、不需要的列在最后(执行 SELECT 时)总是被删除?那些额外未选择的列是否会占用假脱机空间,直到它们最终被删除?
因此,如果我将表 A(5 列)与表 B(10 列)连接起来,则连接后的中间结果是 14 列(带有 1 个公共键)。但假设我最终只选择了 3 列。
查询优化器是否总是在中间结果中包含所有 14 列(从而占用假脱机空间),或者它是否足够聪明以仅在中间结果中包含所需的 3 列?
如果这样做足够聪明,那么我可以通过将要加入的每个表重写为仅该表中我需要的列的子查询来节省假脱机空间。
感谢您的帮助。
【问题讨论】: