Avatar billede lifeenergy Nybegynder
24. januar 2008 - 15:31 Der er 2 kommentarer og
1 løsning

Indexering af JOIN

Jeg har prøvet at se hvor mange rækker den søger igennem for at finde de specifikke data.

EXPLAIN SELECT m.ID AS messageID, m.Subject, m.TimeNDate, m.OpenedByRecipient, m.RepliedByRecipient, p.UserName, p.ID AS
profileID FROM messages m LEFT JOIN profiles p ON p.ID<>5 AND (m.RecipientID = p.ID OR m.SenderID = p.ID) WHERE
m.SenderID=2 AND m.TrashedBySender=0

I message søger den igennem 3 rækker, men i profiles søger den igennem hele 10 rækker. Det bedste man kan opnå er 1.
Mit spørgsmål er så, hvordan man indexerer JOINS mest optimalt. Det er jo en query "på tværs" af 2 tabeller.

mvh
Lifeenergy
Avatar billede erikjacobsen Ekspert
24. januar 2008 - 17:12 #1
Hvad har du index på, og hvor mange rækker har du?
Avatar billede lifeenergy Nybegynder
25. januar 2008 - 18:40 #2
I messages m har jeg index på m.RecipientID, m.SenderID, Primary id.
I profiles p har jeg index på UserName, et index med Active og LastActive, Primary id.
profiles har jeg 36 kolonner og 11 i messages.
Avatar billede lifeenergy Nybegynder
24. juni 2008 - 18:36 #3
Lukker
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