我一直很好奇我应该使用哪种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'表现更好吗?
答案 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