Sobes.tech
Junior

In welke gevallen worden indexen gebruikt in databases?

sobes.tech AI

Antwoord van AI

Indexen in databases worden gebruikt om de snelheid van query-uitvoering te optimaliseren, met name:

  • Gegevens zoeken: Versnelling van SELECT-bewerkingen, vooral met WHERE, JOIN en ORDER BY voorwaarden. Een index stelt de DBMS in staat om sneller de benodigde rijen te vinden zonder de hele tabel te scannen.
  • Sortering: Versnelling van sortering met ORDER BY. Als de sorteerkolommen geïndexeerd zijn, kan de DBMS deze gebruiken en extra sorteermethoden vermijden.
  • Tabelkoppelingen: Versnelling van JOIN-bewerkingen op geïndexeerde kolommen. De index helpt snel de bijbehorende rijen in gerelateerde tabellen te vinden.
  • Uniciteit van gegevens: Garantie dat de waarden in een kolom uniek zijn (via een unieke index).
  • Primaire sleutels: De primaire sleutel is standaard een unieke index en wordt gebruikt voor snelle toegang tot de rij via een unieke identificatie.
  • Secundaire sleutels: Worden gebruikt om referentiële integriteit te waarborgen en JOIN-bewerkingen tussen gerelateerde tabellen te versnellen.

Voorbeelden van kolommen om te indexeren:

  • Kolommen die vaak worden gezocht (WHERE uid = 123).
  • Kolommen die worden gebruikt in JOIN-voorwaarden (table1.id = table2.ref_id).
  • Kolommen die vaak worden gesorteerd (ORDER BY created_at DESC).
  • Kolommen met hoge kardinaliteit (veel unieke waarden).

Situaties waarin indexen mogelijk niet effectief of niet nodig zijn:

  • Zeer kleine tabellen: Bij kleine tabellen kan scannen sneller zijn of vergelijkbaar met zoeken via index.
  • Kolommen met lage kardinaliteit: Een index op een kolom met weinig unieke waarden (bijvoorbeeld een boolean veld TRUE/FALSE) kan geen significante versnelling bieden.
  • Frequent schrijfoperaties (INSERT, UPDATE, DELETE): Indexen vereisen updates bij dataveranderingen, wat schrijfoperaties kan vertragen. Het is niet aan te raden om alle kolommen willekeurig te indexeren.
  • Kolommen in WHERE-voorwaarden met functies: Als een functie wordt toegepast op de kolom in WHERE (bijvoorbeeld WHERE YEAR(date_column) = 2023), wordt een normale index op date_column niet gebruikt. Functionele indexen kunnen nodig zijn (indien ondersteund door de DBMS) of de query moet worden herschreven.