下面的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
下面的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
的2条SQL语句是等价的。你可以看执行计划来确认。通常,给定2个SQL语句以相同的方式影响/返回相同的行,服务器可以自由地以相同的方式执行它们。
INNER JOIN语法更适合于可读性的原因而不是性能。 –
它们是等效查询 - 都是内部连接,但第一个使用较旧的隐式连接语法。你的数据库应该以完全相同的方式执行它们。
如果您不确定,可以随时使用SQL Management Studio至view and compare the execution plans of both queries。
第一个例子是我所见到的被称为的Oracle加入。正如前面提到的那样,性能差异似乎很小。从可读性的角度来看,我更喜欢第二个示例,因为它将连接条件与筛选条件分开。
它们是相同的查询。第一个是较旧的替代语法,但它们都意味着做一个内部连接。
您应该避免使用旧的语法。这不仅仅是可读性,但是当你构建更复杂的查询时,有些事情你根本无法用旧的语法来完成。此外,旧语法正在逐渐淘汰,在大多数产品中标记为等效的外连接语法已被废弃,并且iirc已至少放弃了一次。
[SQL左连接vs FROM行上的多个表有可能重复?](http://stackoverflow.com/questions/894490/sql-left-join-vs-multiple-tables-on-from-line) –