- Indexering används för att optimera prestanda för en databas genom att minimera antalet diskåtkomster som krävs när en fråga bearbetas.
- Indexet är en typ av datastruktur. Den används för att snabbt hitta och komma åt data i en databastabell.
Indexstruktur:
Index kan skapas med hjälp av vissa databaskolumner.
- Den första kolumnen i databasen är söknyckeln som innehåller en kopia av primärnyckeln eller kandidatnyckeln i tabellen. Primärnyckelns värden lagras i sorterad ordning så att motsvarande data lätt kan nås.
- Den andra kolumnen i databasen är datareferensen. Den innehåller en uppsättning pekare som håller adressen till diskblocket där värdet på den specifika nyckeln kan hittas.
Indexeringsmetoder
Beställda index
Indexen sorteras vanligtvis för att göra sökningen snabbare. De index som sorteras är kända som ordnade index.
Exempel : Anta att vi har en personaltabell med tusentals poster och var och en är 10 byte lång. Om deras ID börjar med 1, 2, 3.... och så vidare och vi måste söka student med ID-543.
- I fallet med en databas utan index måste vi söka i diskblocket från start tills det når 543. DBMS kommer att läsa posten efter att ha läst 543*10=5430 byte.
- I fallet med ett index kommer vi att söka med index och DBMS kommer att läsa posten efter att ha läst 542*2= 1084 byte, vilket är mycket mindre jämfört med föregående fall.
Primärt index
- Om indexet skapas på basis av tabellens primärnyckel kallas det primär indexering. Dessa primärnycklar är unika för varje post och innehåller en 1:1-relation mellan posterna.
- Eftersom primärnycklar lagras i sorterad ordning är utförandet av sökoperationen ganska effektivt.
- Det primära indexet kan delas in i två typer: tätt index och sparsamt index.
Tät index
- Det täta indexet innehåller en indexpost för varje söknyckelvärde i datafilen. Det gör sökningen snabbare.
- I detta är antalet poster i indextabellen samma som antalet poster i huvudtabellen.
- Den behöver mer utrymme för att lagra indexposten själv. Indexposterna har söknyckeln och en pekare till den faktiska posten på disken.
Sparsamt index
- I datafilen visas indexpost endast för ett fåtal poster. Varje objekt pekar på ett block.
- I detta, istället för att peka på varje post i huvudtabellen, pekar indexet på posterna i huvudtabellen i en lucka.
Clustering Index
- Ett klustrat index kan definieras som en ordnad datafil. Ibland skapas indexet på icke-primära nyckelkolumner som kanske inte är unika för varje post.
- I det här fallet, för att identifiera posten snabbare, kommer vi att gruppera två eller flera kolumner för att få det unika värdet och skapa index av dem. Denna metod kallas ett klustringsindex.
- De poster som har liknande egenskaper grupperas och index skapas för dessa grupper.
Exempel : anta att ett företag innehåller flera anställda på varje avdelning. Anta att vi använder ett klustringsindex, där alla anställda som tillhör samma Dept_ID betraktas inom ett enda kluster, och indexpekare pekar på klustret som helhet. Här är Dept_Id en icke-unik nyckel.
Det tidigare schemat är lite förvirrande eftersom ett diskblock delas av poster som tillhör det olika klustret. Om vi använder separata diskblock för separata kluster, så kallas det bättre teknik.
Sekundärt index
I den sparsamma indexeringen, när storleken på tabellen växer, växer också storleken på kartläggningen. Dessa mappningar hålls vanligtvis i primärminnet så att adresshämtning ska gå snabbare. Sedan söker sekundärminnet den faktiska datan baserat på adressen som erhållits från kartläggningen. Om mappningsstorleken växer blir det långsammare att hämta själva adressen. I det här fallet kommer det sparsamma indexet inte att vara effektivt. För att övervinna detta problem introduceras sekundär indexering.
I sekundär indexering, för att minska storleken på kartläggningen, introduceras en annan nivå av indexering. I den här metoden väljs det enorma intervallet för kolumnerna initialt så att mappningsstorleken för den första nivån blir liten. Sedan delas varje intervall upp ytterligare i mindre intervall. Mappningen av den första nivån lagras i primärminnet, så att adresshämtning går snabbare. Kartläggningen av den andra nivån och faktiska data lagras i sekundärminnet (hårddisken).
Till exempel:
- Om du vill hitta posten för rulle 111 i diagrammet, kommer den att söka efter den högsta posten som är mindre än eller lika med 111 i första nivåindex. Den kommer att få 100 på den här nivån.
- Sedan i den andra indexnivån gör den 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å här görs en sökning i denna metod. Att infoga, uppdatera eller ta bort görs också på samma sätt. =>