我有一個相對簡單的查詢連接兩個表。 「Where」標準可以在連接標準中或作爲where子句表達。我想知道哪個更有效率。SQL在連接條件或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
案例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中
編輯 如果第二一片連接標準或where子句是sales.salesdate <某個固定的日期,所以它實際上沒有任何加入兩個表的標準確實會改變答案。
實際測試這些查詢所花費的時間有什麼問題? – ChristopheD 2009-09-09 20:30:00
因爲查詢的get緩存,但感謝,真的 – Gratzy 2009-09-09 20:35:29
@Gratzy - DBCC FREEPROCCACHE http://msdn.microsoft.com/en-us/library/ms174283.aspx – 2009-09-09 20:48:38