我的问题类似于这种SQL 操作顺序,但有一点扭曲,所以我认为问这个问题是公平的。
我正在使用 Teradata。我有 2 张桌子: table1
, table2
.
table1
只有一id
列。
table2
具有以下列:id
,val
我可能错了,但我认为这两个陈述给出了相同的结果。
声明 1。
SELECT table1.id, table2.val
FROM table1
INNER JOIN table2
ON table1.id = table2.id
WHERE table2.val<100
声明 2。
SELECT table1.id, table3.val
FROM table1
INNER JOIN (
SELECT *
FROM table2
WHERE val<100
) table3
ON table1.id=table3.id
我的问题是,查询优化器是否足够聪明,可以先
执行 WHERE 子句,然后在语句 1 中执行 JOIN
- 知道语句 2 中实际上不需要表 3
我对 SQL 很陌生,所以如果我有任何误解,请教育我。