Beste lezers,

Het gebruik van indexes met mysql kan veel snelheid opleveren, dat weet bijna iedereen.

Maar ik zit met het volgende dilemma:
Het is zinvol om een index te zetten op een FOREIGN KEY (bijvoorbeeld klantid in tabel factuur).
Maar ik heb op die klantid (samen met een andere kolom) ook al een unique key gezet.
Als ik nu een index op klantid zet komt de volgende melding

UNIQUE en INDEX sleutels behoren niet beide ingesteld te zijn voor de kolom 'klantid'

Het gaat om een tabel met tienduizenden records, de unique key is belangrijk maar ook de index.

Wat moet ik doen? De melding negeren of toch een key schrappen?

Alvast bedankt
Vergis ik me nu heel erg? Of is een INDEX altijd UNIQUE :s
Ik zal me heus vergissen, maar vroeg het me gewoon af
NEE je vergist je (ik begin bijna aan mezelf te twijfelen)

Voor zover ik weet bestaan er 3 verschillende keys.

PRIMARY
De eerste unieke kolom in een tabel. Wordt ook gebruikt om tabellen te koppelen.

UNIQUE
Voor als er nog meer kolommen uniek moeten zijn (naast de PRIMARY)

INDEX
Levert snellere zoekresultaten op in deze kolom.

Van PHPFREAKZ
Een index wil niets anders zeggen dan dat de database een interne tabel aanmaakt met een binaire boomstructuur waardoor hij snel kan zoeken.

edit
Ow ik ben de FOREIGN key vergeten.
Maar als hij UNIQUE is, heeft een INDEX dan wel nut? Ik weet niet hoeveel snelheidswinst het normaal oplevert, maar als ze UNIQUE zijn hoeft hij niet te 'zoeken' omdat er geen dubbele in voor komen.
Ik zou het gewoon op UNIQUE laten denk ik.

Anders moet je het even testen.
Jan Koehoorn heeft hier een test gedaan voor de select, als je ook zo'n testje opzet, alleen dan eerst met alleen UNIQUE, dan INDEX + UNIQUE.

Reageren