-Martin- <admin@natten-i.dk> skrev:
>>Der er i øvrigt ikke megen idé i at have et kombineret indeks
>>med primærnøglen (p) som første element. Da p altid er unik,
>>vil indekset aldrig benytte de resterende felter.
>
> Nå okei, jeg "troede" at når et felt var indexseret, så var
> det hurtigere at bruge i forskellige joins osv.
Det er skam også rigtigt. Men et indeks læses altid "forfra". Dvs.
at når du indekserer flere felter, er rækkefølgen meget vigtig.
> Men måske ikke nå det er ID feltet vi snakker om?
Primary Key er et indeks i sig selv. Derfor er der ikke brug for at
lave et ekstra indeks på dit id-felt. Og da primærnøglen samtidig
er unik, opnår du ingenting ved at oprette flerfeltsindeks med
noget efter din primærnøgle.
> Iøvrigt, så skal ID feltet bruges i 4-5 andre tabeller i samme
> database. Også havde jeg læst mig frem til at det ville ændre
> væsentligt på hastigheden hvis man havde index på det.
Korrekt - men som nævnt er din primærnøgle også et indeks.
> Men hvornår skal man ellers bruge index
Du skal bruge indeks på felter der benyttes til joins og til
søgninger. Hvis din søgning eller join inkluderer flere felter kan
et flerfeltsindeks komme på tale. Søger man f.eks. ofte på fornavn
og efternavn kunne det være praktisk med et indeks á la
INDEX(efternavn, fornavn) - og så have en søgning med
efternavn=<værdi> AND fornavn=<værdi>.
Bemærk i øvrigt at dit indeks ikke kan benyttes hvis du indleder
søgekriteriet med et wildcard: efternavn LIKE '%havn%' kan ikke
benytte indeks, mens LIKE 'Hans%' godt kan.
> (og fuldtekst på long*** felter?)
Fuldtekst-indeksering kan klare nogle af problemerne med wildcards
- så hvis du ofte søger med dobbelte wildcard ('%<værdi>%') er det
måske en idé. Men med <300 rækker er det ikke sikkert det kan
betale sig. Eksperimentér evt. lidt, og se om du kan mærke forskel.
--
Jens Gyldenkærne Clausen
MF (medlem af FIDUSO -
www.fiduso.dk)