在类似下面的场景中,我什么时候应该使用 JOIN ON 或 WHERE?
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 JOIN 语法(WHERE 子句中的 JOIN 条件)与 ANSI-92 JOIN 语法(使用 JOIN 关键字)进行比较。
它们彼此执行相同,但 ANSI-89 缺乏 OUTER JOIN 支持,因此许多数据库具有指示 OUTER 连接的自定义方法:
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/