Basis van databases
Op de kolom LidNr van de tabel Lid met 1 miljoen rijen is een index in de vorm van een B+-boom aangemaakt. Welke combinatie van het effect dat in het algemeen mag worden verwacht en de prijs daarvoor is juist?
- AZoekopdrachten zoals WHERE LidNr = 12345 worden sneller, maar schrijven wordt trager omdat de index ook moet worden bijgewerkt telkens wanneer een rij wordt toegevoegd of gewijzigd
- BZoekopdrachten op alle kolommen worden sneller, zonder enige prijs
- CDe rijen van de tabel worden op LidNr gesorteerd, zodat elke zoekopdracht sneller wordt, en de benodigde opslag wordt gehalveerd
Antwoord en toelichting tonen
Antwoord: A. Zoekopdrachten zoals WHERE LidNr = 12345 worden sneller, maar schrijven wordt trager omdat de index ook moet worden bijgewerkt telkens wanneer een rij wordt toegevoegd of gewijzigd
Een index is een datastructuur om op basis van een waarde in een bepaalde kolom snel de plaats te vinden van de rijen met die waarde; relationele databases gebruiken vaak B+-bomen. Zonder index moeten voor de rij WHERE LidNr = 12345 de 1 miljoen rijen een voor een worden doorzocht (een full table scan), maar met een B+-boom wordt de rij gevonden door slechts enkele niveaus van de wortel naar een blad te volgen. Als elke knoop zich bijvoorbeeld in 100 takken splitst, is 100 × 100 × 100 = 1 miljoen, dus ongeveer drie niveaus zijn genoeg. Omdat de bladeren van een B+-boom in volgorde van de waarden aan elkaar zijn gekoppeld, kan de index ook worden gebruikt voor zoekopdrachten op een bereik, zoals BETWEEN, en voor sorteren met ORDER BY. Aan de andere kant moet de index worden bijgewerkt telkens wanneer een rij wordt toegevoegd, gewijzigd of verwijderd, dus schrijven wordt trager, en de index vraagt opslagruimte. Zoekopdrachten op kolommen zonder index worden niet sneller.