SQL INNER JOIN问题

时间:2010-08-05 08:01:04

标签: sql performance inner-join where

我正在创建一个查询,该查询将显示从8个表派生的记录的信息。最初编写查询的开发人员使用'where this equals this'和'this equals this'的组合来创建连接。

我已经将查询更改为使用INNER JOINS。我想知道我的方法是否比使用WHERE运算符的组合更好。

在衡量良好做法方面,INNER JOINS的组合是一个不错的选择,或者我应该采用不同的技术。

3 个答案:

答案 0 :(得分:3)

从性能的角度来看,没有任何区别......至少没有像Sql-server / Oracle这样突出的RDBMS ...这些数据库引擎能够识别两种模式意味着相同并使用相同的两者的执行计划......

在我的拙见中,两者都是同样好的做法,但你应该保持一致性和正确的对齐...我听说oracle开发人员通常使用where子句,而Sql-Server内部连接...不是很多确定...到现在为止,大多数程序员都能够理解这两种类型的查询......

答案 1 :(得分:1)

我相信两者之间没有性能差异:

ANSI样式
SELECT * FROM Table1 a JOIN TABLE2 b on a.id = b.id

旧式
SELECT * FROM Table1 a , TABLE2 b
WHERE a.id = b.id

ANSI样式更新,更具可读性和漂亮性,我更喜欢旧样式,特别是在加入超过4/5表时...可能是因为我在o_O

答案 2 :(得分:0)

两者的行为都相同(正如The King所说)。我个人更喜欢INNER / OUTER / LEFT JOIN语法,因为它更直观/明确。当您在WHERE子句中进入具有连接条件的LEFT JOIN时,您必须使用加号,然后您必须记住将它们放在哪一侧。 Urgghh。

似乎(再次像The King所说的那样)确实Oracle开发人员倾向于将连接条件放入WHERE子句中。

-Jamiet