(在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
?
当前回答
性能应该是相同的,但我建议使用连接版本,因为在涉及到外部连接时提高了清晰度。
另外,使用连接版也可以避免无意的笛卡尔积。
第三个效果是使用更简单的where条件更容易读取SQL。
其他回答
它们应该完全一样。然而,作为一种编码实践,我宁愿看到Join。它清楚地表达了你的意图,
从功能上讲,它们是相同的。不过,我同意使用连接更好地描述您想要做的事情。很多时候,我认为我知道我想如何查询一些东西,直到我开始做连接,并意识到我想做一个不同于我头脑中的原始查询。
除了这个好答案,我还有一个补充:
这就是分别定义为SQL92和SQL89的内容,它们之间没有性能差异,尽管可以省略INNER这个词(只使用JOIN就足够清楚了,在最简单的查询中保存了5个键盘笔画,现在想象一下在大的查询中有多少笔画)。
它们都是做同样事情的内部连接,一个只是使用更新的ANSI语法。
的确,在功能上,这两个查询应该以相同的方式处理。但是,经验表明,如果您正在从使用新连接语法的视图中进行选择,那么使用该语法组织查询也很重要。如果视图使用了“join”语句,Oracle的优化器可能会感到困惑,但是访问视图的查询使用了传统的“where”子句连接方法。