Dans ma base de données MS SQL Server
, je tire des données de transaction basées sur une variété de codes différents qui sont dans une colonne.SQL CASE vs JOIN efficacité
Serait-il plus efficace:
rejoindre la même table encore et pour chaque code dans une clause WHERE
font des déclarations multiples de cas sur la table entière (ci-dessous)
font des déclarations multiples de cas sur toute la table, mais le limiter par une clause
WHERE SubsidCde IN ('AA','BA','BB', etc)
Nous avons tellement de requêtes en cours d'exécution par seconde que même si j'ai essayé les 3 méthodes, je n'ai pas de résultats définitifs.
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
Voir http://sqlblog.com/blogs/linchi_shea/archive/2011/04/04/performance-impact-the-cost-of-doing-small-lookups-in-a-large-batch.aspx –