Avatar billede lazeric Nybegynder
09. september 2008 - 14:05 Der er 1 kommentar og
2 løsninger

Optimering af Count - Samle flere kolloner i en

Jeg har en tabel hvor jeg har alle de produkter der tilhører et kundenummer, men der er en ny linie for hvert produkt.
Jeg vil gerne lave et view der viser mig alle de produkter en kunde har, men på samme linie.
Jeg er faldet på nedenstående:

SELECT  KundeID, MAX(CASE seq WHEN 1 THEN Produkt ELSE '' END) + ', ' +
MAX(CASE seq WHEN 2 THEN Produkt ELSE '' END)
                      + ', ' +
MAX(CASE seq WHEN 3 THEN Produkt ELSE '' END) + ', ' +
MAX(CASE seq WHEN 4 THEN Produkt ELSE '' END) + ', ' +
MAX(CASE seq WHEN 5 THEN Produkt ELSE '' END) + ', ' +
MAX(CASE seq WHEN 6 THEN Produkt ELSE '' END) + ', ' +
MAX(CASE seq WHEN 7 THEN Produkt ELSE '' END) + ', ' +
MAX(CASE seq WHEN 8 THEN Produkt ELSE '' END) + ', ' +
MAX(CASE seq WHEN 9 THEN Produkt ELSE '' END) + ', ' +
MAX(CASE seq WHEN 10 THEN Produkt ELSE '' END) AS Produkter
FROM        (SELECT    t1.KundeId, t1.Produkt,
                (SELECT    COUNT(*)
                FROM          dbo.BBN_Produkter_m_pris t2
                WHERE      t2.KundeId = t1.KundeId AND t2.Produkt <= t1.Produkt)
              FROM          dbo.BBN_Produkter_m_pris t1) D (KundeId, Produkt, seq)
GROUP BY KundeId


og det virker, men problemet er at databasen er så stor at det tager 15 min at køre denne query.
Hvordan kan jeg optimere det?
Avatar billede fn1977 Nybegynder
09. september 2008 - 18:48 #1
Du skal prette nogle indexes til det

minimum skal der være et clustered index på KundeID

Men du har brug for at der er et index der inkludere Produkt.

Du kan eventuelt køre server profiler mod din database og så evaluere det bagefter.
Avatar billede lazeric Nybegynder
10. september 2008 - 10:29 #2
Jeg er ret vissen til SQL så du må gerne forklare nærmere...
Avatar billede lazeric Nybegynder
10. september 2008 - 13:40 #3
Jeg har istedet lavet et job der en gang i døgnet kører viewet og lægger det i en tabel. Så ligger alle info klar.

Tak for indsatsen.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester