我有一个连接两个表的相对简单的查询。 “Where”条件可以用连接条件或where子句表示。我想知道哪个更有效。

查询的目的是查找从开始到提升为止的推销员的最大销售额。

情况1

select salesman.salesmanid, max(sales.quantity)
from salesman
inner join sales  on salesman.salesmanid =sales.salesmanid
                  and sales.salesdate < salesman.promotiondate
group by salesman.salesmanid

情况二
select salesman.salesmanid, max(sales.quantity)
from salesman
inner join sales  on salesman.salesmanid =sales.salesmanid
where sales.salesdate < salesman.promotiondate
group by salesman.salesmanid

注意案例1完全没有where子句

RDBMS是Sql Server 2005

编辑
如果连接条件或where子句的第二部分是sales.salesdate

最佳答案

在这里,我不会将性能用作决定因素-坦白地说,我认为这两种情况之间确实没有可测量的性能差异。

我将始终使用案例2-为什么?因为在我看来,您应该只将在两个表之间建立JOIN的实际条件放到JOIN子句中-其他所有内容都属于WHERE子句。

只是要保持物品整洁并将其放置在原处,IMO。

显然,在某些情况下,使用左外部联接时,条件的放置确实会影响返回结果的方式-当然,这些情况将从我的建议中排除。

马克

09-05 18:00