Sobes.tech
Middle

Welke soorten indexen zijn er in PostgreSQL?

sobes.tech AI

Antwoord van AI

Er zijn de volgende hoofdtypen indexen:

  1. B-tree (B-boom) - het meest voorkomende type, geschikt voor de meeste typische zoekopdrachten (gelijkheid, vergelijking, bereik). Gebaseerd op een gebalanceerde boom.

  2. Hash (Hash) - gebruikt voor het controleren op gelijkheid (=). Sneller dan B-tree voor dergelijke zoekopdrachten, maar ondersteunt geen vergelijkingen en bereiken. Slaat de hash-waarde van de sleutel en een pointer naar de rij op.

  3. GiST (Generalized Search Tree) - een gegeneraliseerde zoekboomstructuur die het mogelijk maakt om verschillende indexen te bouwen voor complexe datatypes (geometrisch, tekst met full-text zoekfunctie). Gebaseerd op een gebalanceerde boom.

  4. SP-GiST (Space-Partitioned Generalized Search Tree) - een gespecialiseerde versie van GiST voor gegevens die kunnen worden verdeeld over ruimte (bijvoorbeeld punten, rechthoeken). Voorbeelden: k-d bomen, quadtrees.

  5. GIN (Generalized Inverted Index) - een gegeneraliseerde inverted index, vooral voor het zoeken naar elementen binnen samengestelde waarden (bijvoorbeeld arrays, JSONB). Vaak gebruikt voor full-text zoeken.

  6. BRIN (Block Range INdex) - blokbereikindex. Geschikt voor zeer grote tabellen met van nature gesorteerde gegevens (bijvoorbeeld op tijd). Indexeert het bereik van waarden in fysieke blokken op de schijf.

  7. Bloom (Bloom-filter) - geen traditionele index, maar een probabilistische datastructuur voor snelle controle op afwezigheid van een element. Gebruikt om de selectie uit zeer grote tabellen te versnellen wanneer exacte overeenstemming niet vereist is of als extra filter vóór het scannen van de hoofdindex.

Voorbeelden van gebruik:

  • B-tree: index op numerieke velden, datums, strings voor bereikzoekopdrachten (WHERE amount > 100).
  • Hash: wordt zelden direct gebruikt, omdat B-tree meestal sneller is voor de meeste taken.
  • GiST: geografische indexen (gist(location)), indexen voor full-text zoeken (to_tsvector).
  • SP-GiST: indexen voor tweedimensionale gegevens (spgist(point)).
  • GIN: indexen voor arrays (gin(tags)), JSONB (gin(data)), full-text zoeken.
  • BRIN: index op het timestamp-veld in logtabellen, waar de gegevens op tijd zijn gesorteerd.
  • Bloom: index op een set kolommen (bloom(col1, col2, col3)) voor snelle uitsluiting van rijen waar de combinatie van waarden niet aanwezig is.

De keuze van het indextype hangt af van het datatype van de kolom en het soort query dat geoptimaliseerd moet worden.