Indexeren is het opbouwen van een aparte zoekstructuur zodat een database de gewenste rijen kan vinden zonder de hele tabel te lezen. De index bewaart gekozen kolommen in een gesorteerde, doorzoekbare vorm, met een verwijzing terug naar elke volledige rij, zodat een zoekopdracht een snelle sprong wordt in plaats van een trage scan.
De klassieke vergelijking is de index achter in een boek. Zonder die index betekent elke vermelding van een woord vinden dat je elke pagina doorbladert. Mét de index zoek je het woord op, zie je de paginanummers en ga je er direct heen. Een database-index doet hetzelfde voor een query: in plaats van een miljoen rijen te scannen, raadpleegt hij de index en landt op de handvol die matcht. Dit is een van de grootste hefbomen voor snelheid in een relationele database zoals MySQL of PostgreSQL.
Er zit wel een prijs aan. Elke index kost opslag en moet bijgewerkt worden zodra data verandert, wat invoeren en bijwerken een beetje vertraagt. Dus de kunst is de juiste kolommen kiezen om te indexeren, meestal de kolommen waarop je het vaakst filtert, sorteert of koppelt, en de rest met rust laten.
Het verschil kan enorm zijn. Op een tabel van twee miljoen bestellingen scant een zoekopdracht naar het mailadres van één klant misschien elke rij en duurt hij een paar seconden. Voeg een index toe op die mailkolom en dezelfde zoekopdracht komt terug in een paar milliseconden. Je gebruikers voelen dat meteen: een pagina die vroeger bleef hangen laadt nu direct, en de database hoeft er amper moeite voor te doen.
Bij TopDevs stemmen we indexeren af als onderdeel van elke database die we bouwen, zodat de queries die je software het meest draait snel blijven, ook als de data groeit.