这两个sql连接中的哪一个会表现得更好?

时间:2011-09-02 09:54:20

标签: sql join

我一直很好奇我应该使用哪种SQL加入方法。以下两个查询执行完全相同的功能,哪两个更好?

SELECT p.LastName, p.FirstName, o.OrderNo
FROM Persons p
INNER JOIN Orders o
ON p.P_Id = o.P_Id

SELECT p.LastName, p.FirstName, o.OrderNo
FROM Persons p, Orders o
WHERE p.P_Id = o.P_Id

总之,使用INNER JOIN这个词实际上比'WHERE x = y'表现更好吗?

2 个答案:

答案 0 :(得分:1)

没关系。好的DBMS将它优化为相同的代码,基本上使它们相同。

答案 1 :(得分:1)

案例1是在sql server中使用的ANSI标准版本,而案例2是之前使用过的语法并且是折旧的。 Go through this

SELECT p.LastName, p.FirstName, o.OrderNo FROM Persons p INNER JOIN Orders o ON p.P_Id = o.P_Id  

SELECT p.LastName, p.FirstName, o.OrderNo FROM Persons p, Orders o WHERE p.P_Id = o.P_Id

因此,查询的性能将相同

如果您的查询有所不同,请注意。即。

SELECT p.LastName, p.FirstName, o.OrderNo FROM Persons p LEFT JOIN Orders o ON p.P_Id = o.P_Id AND p.Id = 1

Vs的

 SELECT p.LastName, p.FirstName, o.OrderNo FROM Persons p LEFT JOIN Orders o ON p.P_Id = o.P_Id WHERE p.Id = 1

在这种情况下,查询将完全不同。两个查询的输出都不同。

了解这一点...... See this