Difference between inner join and where in select join SQL statement
本问题已经有最佳答案,请猛点这里访问。
我有两个select join sql语句:
1 2 | 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; |
显然,结果是一样的。但是它们之间有什么区别吗,比如性能,可移植性。
一个区别是,第一个选项通过在WHERE子句中表示联接条件来隐藏意图。
第二个选项,即写出连接条件,对于读取查询的用户来说更清楚。它显示了查询的确切目的。
就性能或其他差异而言,不应该有任何差异。两个查询都应该返回完全相同的结果,并在大多数RDBMS下执行相同的操作。
内部联接语法是在20世纪90年代的某个时候添加到SQL中的。优化器使用它可能比使用用于联接条件的WHERE子句的旧语法做得更好,但可能性不大。
它们都应该像现在一样具有高度的可移植性。
内部连接语法更可取,因为它对读者更容易理解,正如其他人已经指出的那样。
它们在SQL Server中完全相同。没有性能差异。
两者都是标准SQL。不同的数据库系统可能会对它们进行不同的优化,但是由于它们非常简单,如果它们这样做的话,我会有点惊讶。但这就是SQL的本质:它是声明性的,在如何执行查询方面为实现提供了很大的余地。不能保证它们的性能是相同的,或者如果它们是不同的,那么速度更快。