我正在为 Teradata 编写 SQL。我需要使用连接来连接来自多个表的数据。使用子查询或创建临时表并一次添加一个连接的列通常更快吗?我正在尝试自己测试它,但网络流量让我很难判断哪个更快。
示例 A:
SELECT a.ID, a.Date, b.Gender, c.Age
FROM mainTable AS a
LEFT JOIN (subquery 1) AS b ON b.ID = a.ID
LEFT JOIN (subquery 2) AS c ON c.ID = a.ID
或者我可以...
示例 B:
CREATE TABLE a AS (
SELECT mainTable.ID, mainTable.Date, sq.Gender
FROM mainTable
LEFT JOIN (subquery 1) AS sq ON sq.id = mainTable.ID
)
CREATE TABLE b AS (
SELECT a.ID, a.Date, a.Gender, sq.Age
FROM a
LEFT JOIN (subquery 2) AS sq ON sq.id = a.ID
)
假设我之后清理了所有东西,一种方法比另一种方法更可取吗?再说一次,我想自己测试一下,但网络流量有点搞砸了。
编辑: 主表有 100k 到 500 万行。子查询返回与主表 ID 的 1:1 关系,但需要 WHERE 子句来过滤日期。子查询 SQL 不是微不足道的,我想这就是我想要传达的。