我已经在这里看到了其他问题的答案,并且大多数建议在SQL中使用JOIN而不是WHERE。
我是SQL的新手,大约6个月前开始使用Oracle,而且我还没有使用过JOIN。
我绝不会做任何复杂的查询。我经常使用的查询如下。使用JOIN的等价物是什么,我应该这样做并且有什么优势吗?
SELECT orders.no, orders.created, totals.net
FROM orders, totals
WHERE orders.no = totals.no
我使用古老版本的Oracle; 8i所以我相信一些JOIN正在使用(+)或其他东西,但从来没有理解它。
答案 0 :(得分:0)
我的理解是执行计划是相同的,你会得到相同的结果。但是,使用JOIN
更清晰,更易于阅读。我自己是WHERE
旧学校的粉丝,但我已经训练自己使用JOIN
代替。
这里有很好的线索,包括它们的等价方式:Inner join vs Where
自己尝试一下,你应该为两者获得相同的执行计划。
答案 1 :(得分:0)
好吧,有时它是另一种方式:出于性能原因,您必须继续使用where
连接语法。
对于非常复杂的sql语句,Oracle仍然使用Oracle连接(也就是where
子句)而不是ANSI连接(又名join
)表现更好。
我认为没有理由不选择ANSI连接或Oracle连接。我个人更喜欢使用ANSI连接,因为它更容易阅读/理解。