我有一个连接两个表的相对简单的查询。 “Where”条件可以在连接条件中表达,也可以表达为 where 子句。我想知道哪个更有效率。
查询是找到销售员从开始到晋升的最大销售额。
Case 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
Case 2
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
EDIT如果连接条件或 where 子句的第二部分是 sales.salesdate
我不会将性能用作这里的决定因素 - 老实说,我认为这两种情况之间确实没有任何可测量的性能差异。
我总是会使用案例 #2 - 为什么?因为在我看来,您应该只将在两个表之间建立 JOIN 的实际条件放入 JOIN 子句中 - 其他所有内容都属于 WHERE 子句。
在我看来,只是保持物品清洁并将物品放在它们所属的地方即可。
显然,在某些使用 LEFT OUTER JOIN 的情况下,条件的放置确实会对返回的结果产生影响 - 当然,这些情况将被排除在我的建议之外。
Marc
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)