我正在優化其中一個SQL作業。SQL查詢性能'<>'運營商vs不存在
在這裏,我有幾個地方,我們已經使用<>運算符。同樣的查詢可以使用NOT EXISTS運算符來替換。我只是想知道哪種方法更好。
示例查詢
If(@Email <> (select Email from Members WHERE MemberId = @MemberId))
--Do Something.
--Same thing can be written as
If(NOT EXISTS (SELECT Email FROM Members WHERE MemberId = @MemberId AND Email = @EmailId))
哪個更好?
我經歷了兩個執行計劃(coundn't附加,因爲所有圖像託管被阻止在辦公室)。 我可以看到<>運算符具有Assert和Stream Aggregate操作而非NOT EXISTS。不知道它們是好還是壞還是沒有影響。
上面的子查詢只給出一個結果。那麼應該有什麼區別? – 2009-11-12 17:20:09
猜猜它應該在這裏相同。雖然我仍然懷疑在執行計劃中出現了兩個額外的實體(Assert和Stream Aggregate)。我必須對此做更多的研究。謝謝。 – 2009-11-12 18:20:06