(Opmerking:dit antwoord verduidelijkt of is het niet eens met enkele van de reeds geschreven opmerkingen.)
DELETEs
worden vertraagd vanwege het verwijderen van de indexitems. UPDATEs
mag vertraagd worden -- het hangt ervan af of een geïndexeerde kolom is gewijzigd.
SELECTs
, UPDATEs
, en DELETEs
, maar niet INSERTs
, moet de rij(en) vinden; hiervoor kan een index veel helpen.
Een INSERT
is een extra bedrag gekwetst als er een UNIQUE
. is index om te controleren.
Secundaire sleutels (in InnoDB), behalve voor UNIQUE
sleutels, worden bijgewerkt (meestal vanwege INSERT
en DELETEs
, maar mogelijk vanwege UPDATE
) op een 'vertraagde' manier via de zogenaamde "Change Buffer". Hierdoor wordt het bijwerken van de index effectief uitgesteld, maar blijft de index toch volledig bruikbaar.
Dit alles wordt niet beïnvloed door de volgorde van de kolommen in een index. Als een index echter groter is dan in het RAM-geheugen kan worden opgeslagen, komt "caching" in het spel en kan I/O al dan niet een rol spelen. Maar dat is een ander onderwerp.
Over het algemeen het voordeel uit een index voor lezen veel zwaarder dan de vertraging voor schrijfbewerkingen.