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
GEOMETRYofGEOGRAPHY.-- 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 |