Home

indexkeuze

Indexkeuze is een begrip binnen databasebeheer en query-optimalisatie. Het verwijst naar het proces waarbij de query-optimizer beslist welk(e) index(es) het meest efficiënt zijn om een query uit te voeren. Het doel is de kosten van het uitvoeren van de query te minimaliseren, met name het aantal I/O-bewerkingen en de verwerkte rekentijd.

Hoe werkt het? De optimizer bekijkt alle beschikbare indexes op de betrokken tabellen, let op de volgorde

Factoren en technieken. Naast predicaatselectiviteit en join-voorwaarden spelen factoren als het aantal beschikbare indexes, de onderhoudskosten

Uitdagingen en effect. Verouderde of ontbrekende statistieken kunnen tot suboptimale keuzes leiden. Parameter sniffing, veranderende workloads

van
kolommen
in
samengestelde
indexes,
en
bepaalt
of
een
index
alle
benodigde
kolommen
bevat
zodat
extra
joins
worden
voorkomen
(een
covering
index).
Voor
elke
mogelijke
access-path
schat
de
optimizer
de
kosten
in
op
basis
van
statistieken
over
de
data,
zoals
kardinaliteit
en
verdeling
van
waarden.
Vervolgens
kiest
hij
de
goedkoopste
uitvoering,
bijvoorbeeld
een
index
seek,
indexscan
of
een
combinatie
met
join-access.
bij
write-operaties
en
de
beoogde
workload
een
rol.
Veel
systemen
gebruiken
kosten-gebaseerde
optimalisatie
(CBO)
die
statistieken
inzetten;
soms
bestaan
er
regelgebaseerde
benaderingen
of
hints
om
de
keuze
te
sturen.
Het
ontwerp
van
samengestelde
indexes
en
het
gebruik
van
covering
indexes
beïnvloeden
ook
de
uiteindelijke
uitvoering.
en
plan-caching
kunnen
prestaties
beïnvloeden.
Een
doordachte
indexkeuze
maakt
deel
uit
van
bredere
indexontwerp-
en
query-optimalisatiestrategieën
en
vereist
periodieke
evaluatie.