内连接与select连接SQL语句中的位置之间的区别

时间:2012-07-18 03:31:38

标签: sql select join

我有两个选择连接SQL语句:

select a.id from table_a as a, table_b as b where a.id=b.id;
select a.id from table_a as a inner join table_b as b on a.id=b.id;

显然,结果是一样的。但它们之间是否存在差异,例如性能,可移植性。

4 个答案:

答案 0 :(得分:21)

一个区别是第一个选项通过在where子句中表达连接条件来隐藏意图。

读取连接条件的第二个选项对于读取查询的用户更清楚。它显示了查询的确切意图。

就表现或任何其他差异而言,不应该有任何。两个查询都应返回完全相同的结果,并在大多数RDBMS下执行相同的操作。

答案 1 :(得分:3)

内部联接语法在20世纪90年代的某个时候被添加到SQL中。有可能(但不太可能)优化器可以用它做得比使用where子句用于连接条件的旧语法更好。

它们应该像现在一样具有高度的便携性。

内部联接语法更可取,因为它更容易读者,正如其他人已经注意到的那样。

答案 2 :(得分:0)

两者都是标准SQL。不同的数据库系统可能会以不同的方式对它们进行优化,但由于它们非常简单,如果有的话,我会感到有些惊讶。但这就是SQL的本质:它是声明性的,这使得实现在如何执行查询方面有很大的余地。不能保证这些表现相同,或者如果它们不同,则更快。

答案 3 :(得分:0)

它们在SQL服务器中完全相同。没有性能差异。