Sobes.tech
Middle

Welke soorten indexen bestaan er in SQL?

sobes.tech AI

Antwoord van AI

  • B-boom (B-tree): De meest voorkomende type. Geschikt voor de meeste leesbewerkingen, inclusief WHERE, LIKE, ORDER BY.

    CREATE INDEX idx_column ON table_name (column_name);
    
  • Hash (Hash): Geoptimaliseerd voor exacte overeenkomsten (=). Ondersteunt geen bereikquery's of sortering.

    -- Syntaxvoorbeeld, kan verschillen afhankelijk van de DBMS
    CREATE INDEX idx_column ON table_name USING HASH (column_name);
    
  • Volledige tekst (Full-Text): Gebruikt voor zoeken in grote tekstvelden (VARCHAR, TEXT).

    -- Syntaxvoorbeeld in MySQL
    CREATE FULLTEXT INDEX idx_text ON table_name (text_column);
    -- Syntaxvoorbeeld in PostgreSQL
    CREATE INDEX idx_text ON table_name USING GIN (to_tsvector('russian', text_column));
    
  • Ruimtelijk (Spatial): Voor indexering van geografische gegevens (punten, lijnen, polygonen). Gebruikt met datatypes zoals GEOMETRY of GEOGRAPHY.

    -- Syntaxvoorbeeld in MySQL
    CREATE SPATIAL INDEX idx_geo ON table_name (spatial_column);
    -- Syntaxvoorbeeld in PostgreSQL
    CREATE INDEX idx_geo ON table_name USING GIST (spatial_column);
    
  • GIN (Gegeneraliseerde Omgekeerde Index) en GiST (Gegeneraliseerde Zoekboom) in PostgreSQL: Flexibele index types, geschikt voor verschillende taken, inclusief full-text zoeken, indexering van arrays en JSON.

  • Gegliederd (Clustered): Bepaalt de fysieke volgorde van rijen in de tabel. Een tabel kan slechts één gegliedeerde index hebben. Vaak gebaseerd op de primaire sleutel.

    -- Bij het declareren van de primaire sleutel wordt vaak een gegliedeerde index gemaakt
    CREATE TABLE table_name (
        id INT PRIMARY KEY CLUSTERED, -- In SQL Server
        ...
    );
    
  • Niet-gegliedeerd (Non-Clustered): Een aparte datastructuur die paren opslaat "kolomwaarde (of kolomwaarden) + verwijzer naar de gegevensrij". Een tabel kan meerdere niet-gegliedeerde indexen hebben.

Vergelijking:

Type index Toepassing Operaties
B-boom Algemeen, meeste datatypes =, <, >, <=, >=, BETWEEN, LIKE (begin)
Hash Exacte overeenstemming (=) =
Full-Text Tekst zoeken MATCH AGAINST (MySQL), to_tsquery (PostgreSQL)
Ruimtelijk Geografische gegevens Ruimtelijke functies
Gegliedeerd Fysieke volgorde van rijen Versnelt selectie van bereiken
Niet-gegliedeerd Versnelt zoeken op geïndexeerde kolommen =, <, >, <= en anderen