我有一个连接两个表的相对简单的查询。 “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。
显然,在某些情况下,使用左外部联接时,条件的放置确实会影响返回结果的方式-当然,这些情况将从我的建议中排除。
马克