多个表上的内连接vs select语句

时间:2013-07-16 16:22:18

标签: sql-server

以下2个查询执行相同的操作,但想知道哪个是最快且最优选的?

NUM是table1&的主键。表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

4 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

它们是等效的查询 - 两者都是内连接,但第一种使用较旧的隐式连接语法。您的数据库应以完全相同的方式执行它们。

如果您不确定,可以始终将SQL Management Studio用于view and compare the execution plans of both queries

答案 2 :(得分:1)

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

您应该避免使用较旧的语法。这不仅仅是可读性,但是当您构建更复杂的查询时,有些事情您根本无法使用旧语法。此外,旧语法经历了逐步淘汰的缓慢过程,在大多数产品中标记为弃用的等效外连接语法,并且iirc已经至少丢失了一个。

答案 3 :(得分:0)

第一个例子是我所看到的被称为 Oracle Join 的例子。如前所述,似乎没有什么性能差异。从可读性的角度来看,我更喜欢第二个例子,因为它将连接条件与过滤条件分开。