W mojej bazie danych MS SQL Server
wyciągam dane transakcji na podstawie różnych kodów, które znajdują się w jednej kolumnie.SQL CASE vs JOIN efficiency
byłoby bardziej efektywne:
przyłączyć się do tej samej tabeli kółko dla każdego kodu w WHERE
zrobić wiele instrukcji sprawę na całej tabeli (poniżej)
zrobić wiele instrukcji case na całej tabeli, ale ogranicza go przez
WHERE SubsidCde IN ('AA','BA','BB', etc)
klauzuli
Mamy tak wiele zapytań działających na sekundę, że mimo że wypróbowałem wszystkie 3 metody, nie otrzymuję ostatecznych wyników.
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
Zobacz http://sqlblog.com/blogs/linchi_shea/archive/2011/04/04/performance-impact-the-cost-of-doing-small-lookups-in-a-large-batch.aspx –