在我的MS SQL Server
數據庫中,我拉取了基於一列中各種不同代碼的交易數據。SQL CASE vs JOIN效率
難道是更有效的:
反覆加入相同的表用於在WHERE子句
做在整個表中的多個case語句每個碼(如下所示)
做多的情況下語句對整個表,但由
WHERE SubsidCde IN ('AA','BA','BB', etc)
條款限制它
我們有很多查詢每秒運行,儘管我已經嘗試了所有3種方法,但沒有得到明確的結果。
SELECT
SUM(CASE WHEN Subsid_Cde = 'AA' THEN Trans_Amt END),0) [AA],
SUM(CASE WHEN Subsid_Cde = 'BA' THEN Trans_Amt END),0) [BA],
SUM(CASE WHEN Subsid_Cde = 'BB' THEN Trans_Amt END),0) [BB]
FROM
Transactions
-- There are 8 more rows like this, using a different code for each line
請參閱http://sqlblog.com/blogs/linchi_shea/archive/2011/04/04/performance-impact-the-cost-of-doing-small-lookups-in-a-large-batch.aspx – 2015-02-02 11:44:18