Avatar billede hoppe11 Nybegynder
20. juli 2007 - 07:55 Der er 5 kommentarer og
1 løsning

index ved join

Hej

Er det nødvendigt eller overflødigt at have index på et felt i en join man laver en order by på?

Her i eksemplet er det så user.name feltet jeg henviser til. Altså om der skal laves et index på feltet? :)

eks.

SELECT tst.*, user.name
FROM tst tst
LEFT JOIN user user ON tst.user_id=user.id
ORDER BY user.name";
Avatar billede fsconsult.dk Nybegynder
20. juli 2007 - 08:05 #1
det giver ofte mening at have index på det felt i den tabel man joiner med (user.id), men det giver mindst lige så meget mening at have index på det/de felter man sorterer på  (user.name).

med MySQL kan du prøve at oprette forskellige index for at finde det optimale for dig, og du kan bruge explain kommandoen til at se om (og hvordan) den evt. bruger dine index.

f.eks.

EXPLAIN SELECT tst.*, user.name
FROM tst tst
LEFT JOIN user user ON tst.user_id=user.id
ORDER BY user.name";
Avatar billede hoppe11 Nybegynder
25. juli 2007 - 23:04 #2
smid et svar :)
Avatar billede hoppe11 Nybegynder
25. juli 2007 - 23:08 #3
Men må jeg lige have lov at spørge? I phpmyadmin er der under struktur oversigten og ved alle indexer en kolonne som hedder "Kardinalitet". Hvad fortæller den helt præcist?
Avatar billede fsconsult.dk Nybegynder
26. juli 2007 - 05:26 #4
Kardinalitet  fortæller hvor mange forekomster der er i tabellen/indexet...
Avatar billede hoppe11 Nybegynder
26. juli 2007 - 11:49 #5
forekomster? hvor mange gange der er søgt på indexet?
Avatar billede fsconsult.dk Nybegynder
26. juli 2007 - 12:52 #6
nej, hvor mange rækker tabellen/indekset indeholder.... som oftest vil det være samme tal.
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