Indeksering i DBMS: Hvad er, typer af indekser med EKSEMPLER
โก Smart opsummering
Indeksering i databaser er en datastruktureringsteknik, der hurtigt henter poster via mapping.ping en sรธgenรธgle til diskadressen for dens post. Primรฆr, sekundรฆr, klyngedannelse, flerniveau og B-trรฆ indekserer hvert handelsrum, hastighed og vedligeholdelse forskelligt.

Hvad er indeksering?
Indeksering er en datastruktureringsteknik, der giver dig mulighed for hurtigt at hente poster fra en databasefil. Et indeks er en lille tabel med kun to kolonner. Den fรธrste kolonne indeholder en kopi af den primรฆre nรธgle eller kandidatnรธgle til en tabel. Den anden kolonne indeholder et sรฆt af pointers der indeholder adressen pรฅ den diskblok, hvor den specifikke nรธglevรฆrdi er gemt.
Et indeks:
- Tager en sรธgenรธgle som input.
- Returnerer effektivt en samling af matchende poster.
Uden et indeks skal databasen scanne hver rรฆkke for at besvare en forespรธrgsel. Med et indeks hopper den direkte til den matchende blok, hvilket er grunden til, at den valgte indekstype har en stor effekt pรฅ ydeevnen.
Typer af indeksering i DBMS

Indeksering i en database er defineret ud fra dens indekseringsattributter. De to hovedtyper af indekseringsmetoder er:
- Primรฆr indeksering
- Sekundรฆr indeksering
Primรฆrt indeks i DBMS
Et primรฆrt indeks er en ordnet fil med fast lรฆngde og to felter. Det fรธrste felt er det samme som den primรฆre nรธgle, og det andet felt peger pรฅ den specifikke datablok. I det primรฆre indeks er der altid en en-til-en-relation mellem posterne i indekstabellen.
Det primรฆre indeks er ogsรฅ yderligere opdelt i to typer:
- Tรฆt indeks
- Sparsomt indeks
Tรฆt indeks
I et tรฆt indeks oprettes en post for hver sรธgenรธglevรฆrdi i databasen. Dette hjรฆlper dig med at sรธge hurtigere, men krรฆver mere plads til at gemme indeksposter. I denne metode indeholder poster sรธgenรธglevรฆrdien og peger pรฅ den faktiske post pรฅ disken.
Sparsomt indeks
Et sparse index er en indekspost, der kun vises for nogle af vรฆrdierne i filen. Sparse index hjรฆlper dig med at lรธse problemer med tรฆt indeksering i DBMSI denne teknik lagrer et interval af indekskolonner den samme datablokadresse, og nรฅr data skal hentes, hentes denne blokadresse.
Et sparse-indeks gemmer kun indeksposter for nogle sรธgenรธglevรฆrdier. Det krรฆver mindre plads og mindre vedligeholdelsesomkostninger til indsรฆttelser og sletninger, men det er langsommere end det kompakte indeks til at finde poster.
Nedenfor er et eksempel pรฅ et databaseindeks for et sparse-indeks.
Tรฆt indeks vs. sparsomt indeks
De to primรฆre indeksvarianter udgรธr modsatte afvejninger, som er opsummeret nedenfor.
| Aspect | Tรฆt indeks | Sparsomt indeks |
|---|---|---|
| Entries | รn pr. sรธgenรธgle | En pr. blok |
| Space | Mere | Less |
| Sรธgehastighed | Hurtigere | Langsommere |
| Vedligeholdelse | Hรธjere | Sรฆnk |
Sekundรฆrt indeks i DBMS
Det sekundรฆre indeks i DBMS kan genereres af et felt, der har en unik vรฆrdi for hver post, og det skal vรฆre en kandidatnรธgle. Det er ogsรฅ kendt som et ikke-klyngeindeks.
Denne indekseringsteknik pรฅ to niveauer til databaser bruges til at reducere kortetping stรธrrelsen pรฅ det fรธrste niveau. For det fรธrste niveau er der valgt et stort udvalg af tal, sรฅ kortetping stรธrrelsen forbliver altid lille.
Eksempel pรฅ sekundรฆrt indeks
Lad os forstรฅ sekundรฆr indeksering med et eksempel pรฅ en databaseindeksering. I en bankkontodatabase gemmes data sekventielt efter kontonummer, men du vil mรฅske gerne finde alle konti i en bestemt filial af ABC bank.
Her kan du have et sekundรฆrt indeks for hver sรธgenรธgle. Indeksposten peger pรฅ en bucket, der indeholder pointere til alle poster med den specifikke sรธgenรธglevรฆrdi.
ClusterIndeks i DBMS
I et klynget indeks gemmes selve posterne i indekset, ikke pointere. Nogle gange oprettes indekset pรฅ ikke-primรฆre nรธglekolonner, som muligvis ikke er unikke for hver post. I en sรฅdan situation kan du gruppere to eller flere kolonner for at fรฅ unikke vรฆrdier og oprette et indeks, som kaldes et klynget indeks. Dette hjรฆlper dig ogsรฅ med at identificere posten hurtigere.
Eksempel: Antag, at en virksomhed har ansat mange medarbejdere i forskellige afdelinger. I dette tilfรฆlde bรธr der oprettes et klyngeindeks for alle medarbejdere, der tilhรธrer den samme afdeling.
De betragtes som en enkelt klynge, og indekset peger pรฅ klyngen som helhed. Her er Department_no en ikke-unik nรธgle.
Hvad er et flerniveauindeks?
Flerniveauindeksering oprettes, nรฅr et primรฆrt indeks ikke passer i hukommelsen. Med denne type indekseringsmetode kan du reducere antallet af diskadgange for at nรฅ en post. Posterne opbevares pรฅ en disk som en sekventiel fil, og et sparse-indeks oprettes oven pรฅ den fil.
B-Tree-indeks
B-trรฆindekset er den mest anvendte datastruktur til trรฆbaseret indeksering i DBMS. Det er et flerniveauformat til trรฆbaseret indeksering, der bruger balanceret binรฆre sรธgetrรฆerAlle bladnoder i B-trรฆet indeholder de faktiske datapointere.
Derudover er alle bladnoder sammenkoblet med en linket liste, hvilket gรธr det muligt for et B-trรฆ at understรธtte bรฅde tilfรฆldig og sekventiel adgang.
- Bladknuder skal have mellem 2 og 4 vรฆrdier.
- Enhver sti fra roden til et blad er stort set lige lang.
- Ikke-bladnoder, bortset fra rodnoden, har mellem 3 og 5 undernoder.
- Enhver knude, der ikke er en rod eller et blad, har mellem n/2 og n bรธrn.
Hvor prรฆcise match-opslag dominerer, og omrรฅdescanninger er sjรฆldne, hashing kan vรฆre et hurtigere alternativ til et B-trรฆindeks.
Fordele ved indeksering
De vigtigste fordele ved indeksering er:
- Det hjรฆlper med at reducere det samlede antal I/O-operationer, der er nรธdvendige for at hente data, sรฅ du ikke behรธver at fรฅ adgang til en rรฆkke direkte fra tabellen.
- Det tilbyder hurtigere sรธgning og hentning af data for brugerne.
- Det kan reducere tabelpladsen, fordi du ikke behรธver at gemme ROWID'en i indekset for hver linket rรฆkke.
- Data i bladnoderne er allerede sorteret efter nรธglens vรฆrdi.
Ulemper ved indeksering
De vigtigste ulemper ved indeksering er:
- For at udfรธre indeksering skal du bruge en primรฆrnรธgle i tabellen med en unik vรฆrdi.
- Du kan ikke bygge et andet indeks pรฅ data, der allerede er indeksorganiseret pรฅ samme mรฅde.
- Du har ikke tilladelse til at partitionere en indeksorganiseret tabel.
- Indeksering forringer ydeevnen i INSERT-, DELETE- og UPDATE-forespรธrgsler.





