JOIN条件是否比T-SQL中的WHERE子句更好?

问题描述 投票:0回答:1

我已经发现您可以同时使用很多时间做相同的事情。在某些情况下,有什么方法可以使其表现更好吗?就可读性而言,一个被认为比另一个更好吗? SQL Server是否仍将它们编译为同一事物?

示例:

SELECT c.customer_name
,      o.order_id
FROM customers AS c
JOIN orders AS o ON c.customer_id = o.customer_id AND o.order_total > 50.00

VS

SELECT c.customer_name
,      o.order_id
FROM customers AS c
JOIN orders AS o ON c.customer_id = o.customer_id
WHERE o.order_total > 50.00

如果我对这件事有严重的误解,或者我的语法不正确,请原谅。

  1. 我对SQL还是很陌生,在我从事新工作的应用程序中,很多逻辑都是在动态SQL中进行的(我两周前才刚开始我的第一项开发工作)]] >>

  2. 这是我的第一个堆栈溢出问题

  3. 我必须从工作中发现的假查询中改编一个假查询,因此,我作为示例给出的语法甚至可能都不正确。每当我认为我了解事情如何运作时,我很快就会意识到,不是那么简单。

  4. 我已经发现您可以同时使用很多时间做相同的事情。在某些情况下,有什么方法可以使其表现更好吗?就...

sql sql-server tsql
1个回答
0
投票

取决于JOIN类型。对于INNER JOINS没有区别,优化器将对其进行相同处理。对于外部联接,有一个关键的区别。对于以下查询:

SELECT * FROM employee AS e 
LEFT OUTER JOIN department AS d ON e.depId=d.depId AND d.location = 'USA'
© www.soinside.com 2019 - 2024. All rights reserved.