Avatar billede tofte Juniormester
17. januar 2007 - 10:38 Der er 1 kommentar og
1 løsning

Performance ved join

Hej

Jeg har to tabeller:
[telefonkald]
dato
start
varighed
telefonnummer

En anden tabel
[priser]
telefonnummer
start_dato
slut_dato
pris
pristype

pristype kan indeholde eks: enduser, routingfee,clientpayout og der er for hvert telefonnummer registreret 1 eller flere priser(med forskellige typer). Mit problem er, at jeg har forsøgt med følgende:

SELECT * FROM telefonkald T LEFT JOIN
(SELECT * priser WHERE pristype='enduser') P1 ON P1.telefonnummer=T.telefonnummer LEFT JOIN
(SELECT * priser WHERE pristype='routingfee') P2 ON P2.telefonnummer=T.telefonnummer LEFT JOIN ....... op til P4
WHERE ...... GROUP BY dato

Ovenstående er en simplificeret udgave af det virkelige problem, men selv om jeg vælger nogle fornuftige indexer, så tager den alt for lang tid. Hvordan kan man ellers gøre det? Jeg har altid et kendt antal muligheder i pristype som ikke ændrer sig.

Rasmus
Avatar billede tofte Juniormester
17. januar 2007 - 10:41 #1
Bemærk at i virkeligheden indgår datoen [telefonkald].dato også i join kriteriet, da denne skal være mellem star_dato og slut_dato på [priser].
Avatar billede tofte Juniormester
17. januar 2007 - 15:50 #2
Problemer er løst.
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