(在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
?
(在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
?
当前回答
使用JOIN可以使代码更容易阅读,因为它是自解释的。
速度上没有区别(我刚刚测试过),执行计划是一样的。
其他回答
尽管两个查询的身份似乎很明显,但有时会发生一些奇怪的事情。在Oracle 10g中将连接谓词从join移动到WHERE时,我遇到了具有不同执行计划的查询(对于WHERE计划更好),但我无法在简化的表和数据中重现此问题。我认为这取决于我的数据和统计。优化器是一个相当复杂的模块,有时它表现得很神奇。
这就是为什么我们不能一般地回答这个问题,因为它取决于DB内部。但我们应该知道,答案必须是“没有区别”。
从功能上讲,它们是相同的。不过,我同意使用连接更好地描述您想要做的事情。很多时候,我认为我知道我想如何查询一些东西,直到我开始做连接,并意识到我想做一个不同于我头脑中的原始查询。
它们应该完全一样。然而,作为一种编码实践,我宁愿看到Join。它清楚地表达了你的意图,
除了这个好答案,我还有一个补充:
这就是分别定义为SQL92和SQL89的内容,它们之间没有性能差异,尽管可以省略INNER这个词(只使用JOIN就足够清楚了,在最简单的查询中保存了5个键盘笔画,现在想象一下在大的查询中有多少笔画)。
如果查询优化器的工作是正确的,那么这些查询之间应该没有区别。它们只是指定相同期望结果的两种方法。