Kort antwoord:
Indexen versnellen SELECT
's en vertraag INSERT
's.
Meestal is het beter om indexen te hebben, omdat ze select
. sneller maken meer dan dat ze vertragen insert
.
Op een UPDATE
de index kan dingen versnellen als een geïndexeerd veld wordt gebruikt in de WHERE
clausule en vertraag dingen als je update
een van de geïndexeerde velden.
Hoe weet u wanneer u een index moet gebruiken
EXPLAIN
toevoegen voor je SELECT
statement.
Vind ik leuk:
EXPLAIN SELECT * FROM table1
WHERE unindexfield1 > unindexedfield2
ORDER BY unindexedfield3
Zal u laten zien hoeveel werk MySQL zal moeten doen op elk van de niet-geïndexeerde velden.
Gebruiken aan die informatie kunt u beslissen of het de moeite waard is om indexen toe te voegen of niet.
Explain kan je ook vertellen of het beter is om te laten vallen en te indexeren
EXPLAIN SELECT * FROM table1
WHERE indexedfield1 > indexedfield2
ORDER BY indexedfield3
Als er heel weinig rijen zijn geselecteerd, of MySQL heeft besloten om negeren de index (dat doet hij van tijd tot tijd) dan kun je net zo goed de index laten vallen, omdat het is uw insert
vertragen s maar uw select
niet versnellen 's.
Aan de andere kant kan het ook zijn dat je select-statement niet slim genoeg is.
(Sorry voor de complexiteit in het antwoord, ik probeerde het simpel te houden, maar faalde).
Link:
MySQL-indexen - wat zijn de best practices?