2013-07-16 74 views
1

下面的2个查询执行相同的操作,但是想知道哪个是最快和最可取的?内部连接与多个表上的选择语句

NUM是在表1 &表2中的主键...

select * 
from table1 tb1, 
table2 tb2 
where tb1.num = tb2.num 


select * 
from table1 tb1 
inner join 
table2 tb2 
on tb1.num = tb2.num 
+0

[SQL左连接vs FROM行上的多个表有可能重复?](http://stackoverflow.com/questions/894490/sql-left-join-vs-multiple-tables-on-from-line) –

回答

1

的2条SQL语句是等价的。你可以看执行计划来确认。通常,给定2个SQL语句以相同的方式影响/返回相同的行,服务器可以自由地以相同的方式执行它们。

+1

INNER JOIN语法更适合于可读性的原因而不是性能。 –

0

第一个例子是我所见到的被称为的Oracle加入。正如前面提到的那样,性能差异似乎很小。从可读性的角度来看,我更喜欢第二个示例,因为它将连接条件与筛选条件分开。

1

它们是相同的查询。第一个是较旧的替代语法,但它们都意味着做一个内部连接。

您应该避免使用旧的语法。这不仅仅是可读性,但是当你构建更复杂的查询时,有些事情你根本无法用旧的语法来完成。此外,旧语法正在逐渐淘汰,在大多数产品中标记为等效的外连接语法已被废弃,并且iirc已至少放弃了一次。