(在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
?
当前回答
如果查询优化器的工作是正确的,那么这些查询之间应该没有区别。它们只是指定相同期望结果的两种方法。
其他回答
在表采用第三范式的场景中,表之间的连接不应该改变。即加入客户和付款应始终保持不变。
但是,我们应该将连接与过滤器区分开来。联接是关于关系的,而过滤器是关于划分整体的。
一些作者,参考标准(即吉姆梅尔顿;艾伦·r·西蒙(1993)。理解新的SQL:完整指南。摩根考夫曼。11 - 12页。ISBN 978-1-55860-245-8.)写了在FROM子句中采用JOIN语法而不是逗号分隔表的好处。
我完全同意这个观点。
有几种方法可以编写SQL并达到相同的结果,但对于许多进行团队工作的人来说,源代码的可读性是一个重要方面,当然,从澄清源代码的意义上讲,将表之间的关系从特定的过滤器中分离出来是一个巨大的飞跃。
使用JOIN可以使代码更容易阅读,因为它是自解释的。
速度上没有区别(我刚刚测试过),执行计划是一样的。
它们都是连接,做同样的事情。
在MySQL查询中,为什么使用join而不是where?
的确,在功能上,这两个查询应该以相同的方式处理。但是,经验表明,如果您正在从使用新连接语法的视图中进行选择,那么使用该语法组织查询也很重要。如果视图使用了“join”语句,Oracle的优化器可能会感到困惑,但是访问视图的查询使用了传统的“where”子句连接方法。
如果查询优化器的工作是正确的,那么这些查询之间应该没有区别。它们只是指定相同期望结果的两种方法。