第一个查询:
Select * from table1 inner join table2 on table1.Id = table2.Id
第二个查询:
Select * from table1, table2 where table1.Id = table2.Id
这些查询在性能方面有何区别?应该使用哪一个?
第一个查询:
Select * from table1 inner join table2 on table1.Id = table2.Id
第二个查询:
Select * from table1, table2 where table1.Id = table2.Id
INNER JOIN
。我发现它更加清晰,因为我可以将联接条件与过滤条件分开,并针对每个联接表使用单独的联接块。为了补充@Akram的回答 - 许多人更喜欢使用inner join
语法,因为它可以更容易地区分连接条件(FROM子句中各个表之间的关系)和过滤条件(应用于减少整个结果集的条件)。在这种情况下它们之间没有区别,但是在更大的查询中,使用inner join
形式可能会提高可读性。
此外,一旦您开始考虑外部连接,您就需要使用中缀连接语法(left outer join
,right outer join
),因此许多人发现使用相同风格的inner join
具有对称性。在WHERE
子句中执行外部连接的旧的不推荐使用的语法(使用*=
)正在逐渐淘汰。