Een index in een database werkt net als een index achter in een boek: in plaats van alle pagina's door te bladeren om een onderwerp te vinden, sla je de index op en spring je direct naar de juiste pagina.
Zonder index moet de database bij elke query alle rijen doorlopen om te vinden wat je zoekt (een "full table scan"). Met een index kan de database direct naar de juiste rijen springen.
CREATE INDEX idx_name ON animals (name);
Dit maakt een index op de kolom name in de tabel animals. Queries die filteren op name worden nu sneller.
Je webshop-query SELECT * FROM products WHERE categorie = '...' is traag. De tabel heeft 500.000 rijen. Maak de query sneller.
Waarom zou je NIET op elke kolom een index zetten?
Je hebt een tabel met 15 rijen. Heeft het zin om daar een index op aan te maken?
De database gebruikt indexen automatisch wanneer dat sneller is. Je hoeft je queries niet aan te passen. De query planner van het DBMS bepaalt of een index wordt gebruikt.
Om te controleren of een index wordt gebruikt, kun je EXPLAIN voor je query zetten:
EXPLAIN SELECT * FROM animals WHERE name = 'Teun';
Dit toont het query plan: welke indexen worden gebruikt en hoeveel rijen de database moet doorlopen.
Je vermoedt dat je query op de kolom color geen index gebruikt. Hoe check je dat?