Kort svar:
Indekser fremskynder SELECT
's og sænk farten INSERT
's.
Normalt er det bedre at have indekser, fordi de fremskynder select
mere end de bremser insert
.
På en UPDATE
indekset kan fremskynde tingene langt op hvis et indekseret felt bruges i WHERE
klausul og sænke tingene, hvis du update
et af de indekserede felter.
Hvordan ved du, hvornår du skal bruge et indeks
Tilføj EXPLAIN
foran din SELECT
erklæring.
Sådan:
EXPLAIN SELECT * FROM table1
WHERE unindexfield1 > unindexedfield2
ORDER BY unindexedfield3
Vil vise dig, hvor meget arbejde MySQL skal udføre på hvert af de uindekserede felter.
Brug af den info kan du bestemme, om det er umagen værd at tilføje indekser eller ej.
Explain kan også fortælle dig, om det er bedre at droppe og indeksere
EXPLAIN SELECT * FROM table1
WHERE indexedfield1 > indexedfield2
ORDER BY indexedfield3
Hvis meget få rækker er valgt, eller MySQL besluttede at ignorere indekset (det gør det fra tid til anden) så kan du lige så godt droppe indekset, for det er bremse dit insert
s, men ikke fremskynde dit select
s.
Så igen kan det også være, at dit udvalgte udsagn ikke er klogt nok.
(Beklager kompleksiteten i svaret, jeg prøvede at holde det enkelt, men det lykkedes ikke).
Link:
MySQL-indekser - hvad er bedste praksis?