我应该什么时候使用join on,或者在下面这样的场景中在哪里使用join?
DECLARE
@PhoneNumber int = 5551234
-- JOIN ON
SELECT *
FROM Persons
JOIN Employees ON Persons.DateOfBirth = Employees.DateOfBirth AND
Persons.PhoneNumber = Employees.PhoneNumber
WHERE Persons.PhoneNumber = @PhoneNumber
-- WHERE
SELECT *
FROM Persons
JOIN Employees ON Persons.DateOfBirth = Employees.DateofBirth
WHERE Persons.PhoneNumber = @PhoneNumber AND Employees.PhoneNumber = @PhoneNumber
我知道第一个查询有一个phonenumber列,而第二个查询有两个。这会显著影响查询的速度吗?
最佳答案
除了语法错误之外,您还比较了ansi-89连接语法(where子句中的连接条件)和ansi-92连接语法(使用join关键字)。
它们彼此执行相同的操作,但是ANSI-89缺少外部连接支持,因此许多数据库都有表示外部连接的自定义方法:
database ANSI-89 OUTER JOIN syntax
------------------------------------
Oracle t1.column = t2.column(+)
SQL Server t1.column =* t2.column
为了便于移植和可读,请使用ANSI-92语法。
关于sql - 哪个查询更快?哪个更清洁?加入或在哪里,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3892525/