En mi base de datos MS SQL Server
estoy extrayendo datos de transacciones basados en una variedad de códigos diferentes que están en una columna.SQL CASE vs JOIN efficiency
sería más eficiente para:
se unen a la misma mesa una y otra vez para cada código en una cláusula WHERE
hacer múltiples declaraciones de caso sobre toda la tabla (que se muestra a continuación)
hacer múltiples declaraciones de caso sobre toda la mesa, pero la limitan por una cláusula
WHERE SubsidCde IN ('AA','BA','BB', etc)
Tenemos tantas consultas ejecutándose por segundo que, aunque he probado los 3 métodos, no obtengo resultados definitivos.
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
Consulte http://sqlblog.com/blogs/linchi_shea/archive/2011/04/04/performance-impact-the-cost-of-doing-small-lookups-in-a-large-batch.aspx –