1

下面的 2 个查询执行相同的操作,但想知道哪个是最快和最可取的?

NUM 是 table1 和 table2 上的主键...

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

4 回答 4

2

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

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

于 2013-07-16T16:45:38.510 回答
1

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

于 2013-07-16T16:24:54.350 回答
1

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

如果您不确定,可以随时使用 SQL Management Studio查看和比较两个查询的执行计划

于 2013-07-16T16:27:36.680 回答
0

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

于 2013-07-16T16:36:03.277 回答