内部联接和select join SQL语句中的where之间的差异
我有两条select join SQL语句:内部联接和select join SQL语句中的where之间的差异,sql,select,join,Sql,Select,Join,我有两条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; 显然,它们的结果是一样的。但是它们之间有什么区别吗,比如性能、可移植性 两者都是标准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;
显然,它们的结果是一样的。但是它们之间有什么区别吗,比如性能、可移植性 两者都是标准SQL。不同的数据库系统可能会对它们进行不同的优化,但因为它们非常简单,如果它们这样做,我会有点惊讶。但这就是SQL的本质:它是声明性的,这为实现如何执行查询提供了很大的余地。不能保证它们执行相同的操作,或者如果它们不同,则执行更快的操作。一个区别是,第一个选项通过在where子句中表示连接条件来隐藏意图 第二个选项,即写入连接条件的位置,对于读取查询的用户来说更加清楚。它显示了查询的确切意图
就性能或任何其他差异而言,不应存在任何差异。这两个查询应该返回完全相同的结果,并在大多数RDBMS下执行相同的操作。它们在SQL server中完全相同。没有性能差异。内部连接语法是在20世纪90年代的某个时候添加到SQL中的。优化器可能(但不太可能)使用它比使用where子句作为连接条件的旧语法做得更好 它们都应该像现在一样具有高度的可移植性
内部联接语法更可取,因为读者更容易阅读,正如其他人所说。您的问题不清楚您是否将SQL作为一种在许多数据库系统或SQL Server(Microsoft产品)中实现的语言。对于大多数DBRM,如MySQL、SQL Server、Oracle,db22您说过不能保证这些是相同的。你能举个例子吗?对不起,我的意思是“不能保证这些性能相同”,我已经修正了我的答案。