- Indeksering bruges til at optimere ydeevnen af en database ved at minimere antallet af diskadgange, der kræves, når en forespørgsel behandles.
- Indekset er en type datastruktur. Det bruges til hurtigt at finde og få adgang til dataene i en databasetabel.
Indeksstruktur:
Indekser kan oprettes ved hjælp af nogle databasekolonner.
- Den første kolonne i databasen er søgenøglen, der indeholder en kopi af den primære nøgle eller kandidatnøgle til tabellen. Værdierne for den primære nøgle gemmes i sorteret rækkefølge, så de tilsvarende data nemt kan tilgås.
- Den anden kolonne i databasen er datareferencen. Den indeholder et sæt pointere, der holder adressen på diskblokken, hvor værdien af den bestemte nøgle kan findes.
Indekseringsmetoder
Bestilte indekser
Indeksene er normalt sorteret for at gøre søgningen hurtigere. De indekser, der sorteres, er kendt som ordnede indekser.
Eksempel : Antag, at vi har en medarbejdertabel med tusindvis af poster, og som hver er 10 bytes lang. Hvis deres ID'er starter med 1, 2, 3....og så videre, og vi skal søge elev med ID-543.
- I tilfælde af en database uden indeks, skal vi søge i diskblokken fra start til den når 543. DBMS vil læse posten efter at have læst 543*10=5430 bytes.
- I tilfælde af et indeks, vil vi søge ved hjælp af indekser, og DBMS vil læse posten efter at have læst 542*2= 1084 bytes, hvilket er meget mindre sammenlignet med det tidligere tilfælde.
Primært indeks
- Hvis indekset er oprettet på basis af den primære nøgle i tabellen, er det kendt som primær indeksering. Disse primære nøgler er unikke for hver post og indeholder 1:1 relation mellem posterne.
- Da primærnøgler er lagret i sorteret rækkefølge, er udførelsen af søgeoperationen ret effektiv.
- Det primære indeks kan klassificeres i to typer: Tæt indeks og sparsomt indeks.
Tæt indeks
- Det tætte indeks indeholder en indekspost for hver søgenøgleværdi i datafilen. Det gør søgningen hurtigere.
- I denne er antallet af poster i indekstabellen det samme som antallet af poster i hovedtabellen.
- Den har brug for mere plads til at gemme selve indeksposten. Indeksposterne har søgetasten og en pointer til den faktiske post på disken.
Sparsomt indeks
- I datafilen vises indekspost kun for nogle få elementer. Hvert element peger på en blok.
- I dette, i stedet for at pege på hver post i hovedtabellen, peger indekset på posterne i hovedtabellen i et hul.
Klyngeindeks
- Et klynget indeks kan defineres som en ordnet datafil. Nogle gange oprettes indekset på ikke-primære nøglekolonner, som måske ikke er unikke for hver post.
- I dette tilfælde, for at identificere posten hurtigere, vil vi gruppere to eller flere kolonner for at få den unikke værdi og skabe indeks ud af dem. Denne metode kaldes et klyngeindeks.
- De poster, der har lignende karakteristika, grupperes, og der oprettes indekser for disse grupper.
Eksempel : antag, at en virksomhed indeholder flere medarbejdere i hver afdeling. Antag, at vi bruger et klyngeindeks, hvor alle medarbejdere, der tilhører det samme Dept_ID, betragtes inden for en enkelt klynge, og indeksmarkører peger på klyngen som helhed. Her er Dept_Id en ikke-unik nøgle.
Det forrige skema er lidt forvirrende, fordi en diskblok deles af poster, der tilhører den forskellige klynge. Hvis vi bruger separat diskblok til separate klynger, så kaldes det bedre teknik.
Sekundært indeks
I den sparsomme indeksering vokser størrelsen af kortlægningen også efterhånden som tabellens størrelse vokser. Disse tilknytninger opbevares normalt i den primære hukommelse, så adressehentning skal være hurtigere. Derefter søger den sekundære hukommelse i de faktiske data baseret på den adresse, der er hentet fra kortlægningen. Hvis kortstørrelsen vokser, bliver hentning af selve adressen langsommere. I dette tilfælde vil det sparsomme indeks ikke være effektivt. For at overvinde dette problem introduceres sekundær indeksering.
I sekundær indeksering introduceres et andet niveau af indeksering for at reducere størrelsen af kortlægning. I denne metode vælges det enorme område for kolonnerne indledningsvis, så kortlægningsstørrelsen af det første niveau bliver lille. Derefter opdeles hvert område yderligere i mindre områder. Kortlægningen af det første niveau gemmes i den primære hukommelse, så adressehentning er hurtigere. Kortlægningen af det andet niveau og faktiske data gemmes i den sekundære hukommelse (harddisk).
For eksempel:
- Hvis du ønsker at finde posten for rulle 111 i diagrammet, så vil den søge efter den højeste post, som er mindre end eller lig med 111 i indekset på første niveau. Den får 100 på dette niveau.
- Så i det andet indeksniveau gør det igen max (111)<= 111 and gets 110. now using the address 110, it goes to data block starts searching each record till 111. < li>
- Sådan udføres en søgning i denne metode. Indsættelse, opdatering eller sletning sker også på samme måde. =>