Indeksering og forespørgselsoptimering
It A · STX · A-niveau · Databaser og datamodellering
💻 Indeksering og forespørgselsoptimering
Indeksering (database indexes) = datastruktur der speeder søgning op i databaser. Uden indeks: full table scan O(n) — langsomt. Med indeks: ofte O(log n) eller O(1).
Klassiske index-typer:
1.
B-tree-indeks — standard. Sorteret balanceret træ. Hurtigt for =, <, >, BETWEEN, ORDER BY. Eksempel: CREATE INDEX idx_email ON users(email).
2.
Hash-indeks — kun for = (ikke ranges). O(1).
3.
Bitmap-indeks — for kolonner med få unikke værdier (køn, status). Effektivt i data warehouses.
4.
Full-text-indeks — søger inde i tekst (LIKE-mønstre er langsomme). MySQL FULLTEXT, PostgreSQL tsvector.
5.
Spatial-indeks — for geografiske data (lokationer, polygoner). R-tree, GiST.
6.
Composite indeks — flere kolonner. Order matters.
Trade-off: indeks gør SELECT hurtig, men INSERT/UPDATE/DELETE LANGSOMMERE (skal opdatere indeks). Tag overskudsindeks → ekstra lagerplads.
Forespørgselsoptimering (query optimization):
- (a) Use EXPLAIN/EXPLAIN ANALYZE — vis query-plan. Find SCANS (slow) vs. INDEX SEEKS (fast).
- (b) Skriv WHERE-clauses så de RAMMER indeks — undgå funktioner på indekserede kolonner (
WHERE YEAR(date) = 2024er DÅRLIGT — kan ikke bruge index). - (c) Avoid SELECT * — vælg kun kolonner du har brug for.
- (d) JOIN på indekserede kolonner.
- (e) LIMIT når kun N resultater behøves.
- (f) Pagination — brug cursor (
WHERE id > X) i stedet forOFFSET(langsomt for store offsets). - (g) Cache ofte-brugte forespørgsler.
- (h) **Materia
Læringsmål
- Forklare hvordan indeksering forbedrer forespørgselshastighed
- Oprette indekser på relevante kolonner
- Vurdere konsekvenser af indeksering for skrivehastighed og lagerplads
Sådan kan du arbejde med emnet
- Forklar, hvad et databaseindeks er, og beskriv, hvad der sker med en forespørgsels køretid med og uden indeks
- Vis et eksempel på en dårlig SQL-forespørgsel og optimér den med et indeks og en bedre struktur
- Diskutér, hvornår det ikke er en god idé at tilføje et indeks til en tabel
Arbejd iterativt med prototyper og dokumentation. Test, evaluér og dokumentér.
Øv dette emne med AI — quizzer, forklaringer og feedback tilpasset dit niveau.
Prøv Fagportalen gratis