(在oracle中)在性能上有区别吗

Select * from Table1 T1 
Inner Join Table2 T2 On T1.ID = T2.ID

And

Select * from Table1 T1, Table2 T2 
Where T1.ID = T2.ID

?


当前回答

在PostgreSQL中,它们绝对没有区别——它们都等同于相同的查询计划。我99%确信甲骨文也是如此。

其他回答

使用JOIN可以使代码更容易阅读,因为它是自解释的。

速度上没有区别(我刚刚测试过),执行计划是一样的。

它们应该完全一样。然而,作为一种编码实践,我宁愿看到Join。它清楚地表达了你的意图,

性能应该是相同的,但我建议使用连接版本,因为在涉及到外部连接时提高了清晰度。

另外,使用连接版也可以避免无意的笛卡尔积。

第三个效果是使用更简单的where条件更容易读取SQL。

不要忘记在Oracle中,如果连接键属性在两个表中命名相同,你也可以这样写:

select *
from Table1 inner join Table2 using (ID);

当然,这也有相同的查询计划。

[为了加分…]

使用JOIN语法允许您更容易地注释掉连接,因为它全部包含在一行中。如果要调试一个复杂的查询,这可能很有用

正如其他人所说,它们在功能上是相同的,但是JOIN更清楚地表达了意图。因此,它可能会在当前oracle版本的某些情况下帮助查询优化器(我不知道它是否有用),它可能会在oracle的未来版本中帮助查询优化器(没有人知道),或者如果你改变数据库供应商,它可能会有帮助。