- Az indexelés az adatbázis teljesítményének optimalizálására szolgál a lekérdezés feldolgozásakor szükséges lemezelérések számának minimalizálásával.
- Az index egyfajta adatstruktúra. Arra használják, hogy gyorsan megtalálják és elérjék az adatokat egy adatbázistáblában.
Az index szerkezete:
Egyes adatbázis-oszlopok segítségével indexek hozhatók létre.
- Az adatbázis első oszlopa a keresési kulcs, amely a tábla elsődleges kulcsának vagy jelölt kulcsának másolatát tartalmazza. Az elsődleges kulcs értékeit rendezett sorrendben tároljuk, így a megfelelő adatok könnyen elérhetők.
- Az adatbázis második oszlopa az adathivatkozás. Tartalmaz egy sor mutatót, amely annak a lemezblokknak a címét tartalmazza, ahol az adott kulcs értéke megtalálható.
Indexelési módszerek
Rendezett indexek
Az indexek általában a keresés gyorsabbá tétele érdekében vannak rendezve. A rendezett indexeket rendezett indexeknek nevezzük.
Példa : Tegyük fel, hogy van egy alkalmazotti táblánk több ezer rekorddal, amelyek mindegyike 10 bájt hosszú. Ha az azonosítójuk 1-gyel, 2-vel, 3-mal kezdődik... és így tovább, és meg kell keresnünk a diákot ID-543-mal.
- Index nélküli adatbázis esetén keresnünk kell a lemezblokkot az elejétől egészen az 543-ig. A DBMS az 543*10=5430 bájt beolvasása után olvassa be a rekordot.
- Index esetén indexek segítségével fogunk keresni, és a DBMS 542*2=1084 bájt beolvasása után olvassa be a rekordot, ami nagyon kevesebb az előző esethez képest.
Elsődleges index
- Ha az indexet a tábla elsődleges kulcsa alapján hozzák létre, akkor azt elsődleges indexelésnek nevezzük. Ezek az elsődleges kulcsok minden rekordhoz egyediek, és 1:1 viszonyt tartalmaznak a rekordok között.
- Mivel az elsődleges kulcsok rendezett sorrendben vannak tárolva, a keresési művelet végrehajtása meglehetősen hatékony.
- Az elsődleges index két típusba sorolható: sűrű index és ritka index.
Sűrű index
- A sűrű index egy indexrekordot tartalmaz minden keresési kulcs értékéhez az adatfájlban. Gyorsítja a keresést.
- Ebben az indextábla rekordjainak száma megegyezik a főtábla rekordjainak számával.
- Több helyre van szüksége magának az indexrekordnak a tárolására. Az indexrekordok tartalmazzák a keresési kulcsot és egy mutatót a lemezen lévő tényleges rekordra.
Ritka index
- Az adatfájlban az indexrekord csak néhány elemnél jelenik meg. Minden elem egy blokkra mutat.
- Ebben ahelyett, hogy a főtábla minden rekordjára mutatna, az index a főtábla rekordjaira mutat résben.
Klaszterezési index
- A fürtözött index rendezett adatfájlként definiálható. Néha az index nem elsődleges kulcsoszlopokon jön létre, amelyek nem feltétlenül egyediek minden rekordhoz.
- Ebben az esetben a rekord gyorsabb azonosítása érdekében két vagy több oszlopot csoportosítunk, hogy megkapjuk az egyedi értéket, és indexet hozzunk létre belőlük. Ezt a módszert klaszterezési indexnek nevezik.
- A hasonló jellemzőkkel rendelkező rekordokat csoportosítja, és indexeket hoz létre ezekhez a csoportokhoz.
Példa : tegyük fel, hogy egy vállalatnak több alkalmazottja van az egyes részlegeken. Tegyük fel, hogy fürtözési indexet használunk, ahol az összes, ugyanahhoz a Dept_ID-hez tartozó alkalmazottat egyetlen fürtön belül tekintjük, és az indexmutatók a fürt egészére mutatnak. Itt a Dept_Id egy nem egyedi kulcs.
próbáld meg elkapni a javat
Az előző séma kevéssé zavaró, mert egy lemezblokkot megosztanak a különböző fürthöz tartozó rekordok. Ha külön lemezblokkot használunk különálló klaszterekhez, akkor azt jobb technikának nevezzük.
Másodlagos index
A ritka indexelésnél a táblázat méretének növekedésével a leképezés mérete is nő. Ezeket a leképezéseket általában az elsődleges memóriában tárolják, hogy a címlekérés gyorsabb legyen. Ezután a másodlagos memória a leképezésből kapott cím alapján keresi az aktuális adatokat. Ha a leképezés mérete nő, akkor maga a cím lekérése lassabb lesz. Ebben az esetben a ritka index nem lesz hatékony. A probléma megoldása érdekében bevezetik a másodlagos indexelést.
A másodlagos indexelésben a leképezés méretének csökkentése érdekében egy másik indexelési szintet vezetnek be. Ennél a módszernél az oszlopok hatalmas tartományát először úgy választjuk ki, hogy az első szint leképezési mérete kicsi legyen. Ezután az egyes tartományokat tovább osztják kisebb tartományokra. Az első szint leképezése az elsődleges memóriában tárolódik, így a címlehívás gyorsabb. A második szint leképezése és az aktuális adatok a másodlagos memóriában (merevlemezen) tárolódnak.
Például:
- Ha meg akarja találni a 111-es dobás rekordját a diagramban, akkor az első szintű indexben a 111-nél kisebb vagy azzal egyenlő legmagasabb bejegyzést keresi. 100-at fog kapni ezen a szinten.
- Aztán a második indexszinten ismét max (111)<= 111 and gets 110. now using the address 110, it goes to data block starts searching each record till 111. < li>
- Ebben a módszerben a keresés így történik. A beillesztés, frissítés vagy törlés is ugyanígy történik. =>