SQL - 正确加入 VS a = b in where 子句
SQL - proper join VS a = b in where clause
我只是希望有人能告诉我下面两个查询之间的效率是否存在差异。
查询 1
SELECT A.CUSTOMER, B.INVOICE FROM CUS A
JOIN INV B ON
A.CUS_ID = B.CUS_ID
WHERE
B.INV_DATE > '2015-09-06'
查询 2
SELECT A.CUSTOMER, B.INVOICE FROM CUS A, INV B
WHERE A.CUS_ID = B.CUS_ID AND
B.INV_DATE > '2015-09-06'
我很确定查询 1 会更有效率,但我希望有人能确认。
SELECT * FROM table1, table2, ... 语法对于几个表来说是可以的,但是随着表的数量的增加,它变得越来越难读(不一定是数学上准确的语句)表增加。
JOIN 语法更难编写(在开始时),但它明确了哪些条件会影响哪些表。这使得犯错变得更加困难。
此外,如果所有连接都是 INNER,那么两个版本是等价的。然而,当你在声明中的任何地方加入 OUTER 时,事情就变得复杂多了,这几乎可以保证你写的东西不会是
查询您认为自己写了什么。
您的性能问题已得到解答:没有区别。
我只是希望有人能告诉我下面两个查询之间的效率是否存在差异。
查询 1
SELECT A.CUSTOMER, B.INVOICE FROM CUS A
JOIN INV B ON
A.CUS_ID = B.CUS_ID
WHERE
B.INV_DATE > '2015-09-06'
查询 2
SELECT A.CUSTOMER, B.INVOICE FROM CUS A, INV B
WHERE A.CUS_ID = B.CUS_ID AND
B.INV_DATE > '2015-09-06'
我很确定查询 1 会更有效率,但我希望有人能确认。
SELECT * FROM table1, table2, ... 语法对于几个表来说是可以的,但是随着表的数量的增加,它变得越来越难读(不一定是数学上准确的语句)表增加。
JOIN 语法更难编写(在开始时),但它明确了哪些条件会影响哪些表。这使得犯错变得更加困难。
此外,如果所有连接都是 INNER,那么两个版本是等价的。然而,当你在声明中的任何地方加入 OUTER 时,事情就变得复杂多了,这几乎可以保证你写的东西不会是 查询您认为自己写了什么。
您的性能问题已得到解答:没有区别。