例如,第一个查询的处理是否与第二个查询不同?
查询1
SELECT t1.var1, t2.var2 FROM table1 t1
INNER JOIN table2 t2
ON t1.key = t2.key
WHERE t2.ID = 'ABCD'
查询2
SELECT t1.var1, t2.var2 FROM table1 t1
INNER JOIN (
SELECT var2, key from table2
WHERE ID = 'ABCD'
) t2
ON t1.key = t2.key
WHERE t2.ID = 'ABCD'
乍一看,好像第二个查询会更有效 - 在连接开始之前,table2会减少,而第一个查询似乎先加入表,然后再减少。我正在使用teradata,如果重要的话。
答案 0 :(得分:1)
取决于供应商,版本和配置
Teradata旧版本/旧版配置可能会将子查询假脱机作为查询2的第一阶段,与查询1相比,导致减少性能取决于表的主索引和连接算法。
我建议避免这种“优化”。
P.S。