- Indeksavimas naudojamas duomenų bazės našumui optimizuoti sumažinant prieigų prie disko skaičių, reikalingą apdorojant užklausą.
- Indeksas yra duomenų struktūros tipas. Jis naudojamas norint greitai surasti ir pasiekti duomenis duomenų bazės lentelėje.
Indekso struktūra:
Indeksus galima sukurti naudojant kai kuriuos duomenų bazės stulpelius.
- Pirmasis duomenų bazės stulpelis yra paieškos raktas, kuriame yra pirminio rakto arba kandidato lentelės rakto kopija. Pirminio rakto reikšmės saugomos surūšiuota tvarka, kad būtų galima lengvai pasiekti atitinkamus duomenis.
- Antrasis duomenų bazės stulpelis yra duomenų nuoroda. Jame yra rodyklių rinkinys, turintis disko bloko adresą, kuriame galima rasti konkretaus rakto reikšmę.
Indeksavimo metodai
Užsakyti indeksai
Indeksai paprastai rūšiuojami, kad paieška būtų greitesnė. Surūšiuoti indeksai yra žinomi kaip sutvarkyti indeksai.
Pavyzdys : Tarkime, kad turime darbuotojų lentelę su tūkstančiais įrašų, kurių kiekvienas yra 10 baitų ilgio. Jei jų ID prasideda 1, 2, 3....ir taip toliau, ir mes turime ieškoti studento su ID-543.
- Jei duomenų bazėje nėra indekso, turime ieškoti disko bloko nuo pradžios iki jo pasiekia 543. DBVS nuskaitys įrašą nuskaitęs 543*10=5430 baitų.
- Indekso atveju ieškosime naudodami indeksus, o DBVS nuskaitys įrašą nuskaitęs 542*2= 1084 baitus, o tai yra labai mažiau, palyginti su ankstesniu atveju.
Pirminis indeksas
- Jei indeksas sukurtas remiantis pirminiu lentelės raktu, tada jis vadinamas pirminiu indeksavimu. Šie pirminiai raktai yra unikalūs kiekvienam įrašui ir turi 1:1 ryšį tarp įrašų.
- Kadangi pirminiai raktai saugomi surūšiuota tvarka, paieškos operacija yra gana efektyvi.
- Pirminį indeksą galima suskirstyti į du tipus: tankų indeksą ir retąjį indeksą.
Tankus indeksas
- Tankiame indekse yra kiekvienos paieškos rakto reikšmės duomenų faile indekso įrašas. Tai pagreitina paiešką.
- Čia įrašų skaičius indekso lentelėje yra toks pat kaip ir pagrindinės lentelės įrašų skaičius.
- Jam reikia daugiau vietos pačiam indekso įrašui saugoti. Indekso įrašuose yra paieškos raktas ir rodyklė į tikrąjį įrašą diske.
Retas indeksas
- Duomenų faile rodyklės įrašas rodomas tik keletui elementų. Kiekvienas elementas nurodo bloką.
- Čia, užuot nukreipusi į kiekvieną pagrindinės lentelės įrašą, indeksas nurodo į įrašus pagrindinėje lentelėje esantį tarpą.
Klasterizacijos indeksas
- Sugrupuotas indeksas gali būti apibrėžtas kaip sutvarkytas duomenų failas. Kartais indeksas sukuriamas ne pirminio rakto stulpeliuose, kurie gali būti ne unikalūs kiekvienam įrašui.
- Tokiu atveju, norėdami greičiau identifikuoti įrašą, sugrupuosime du ar daugiau stulpelių, kad gautume unikalią vertę ir sukurtume iš jų indeksą. Šis metodas vadinamas klasterizacijos indeksu.
- Įrašai, turintys panašias charakteristikas, sugrupuojami ir šioms grupėms sukuriami indeksai.
Pavyzdys : tarkime, kad įmonėje yra keli darbuotojai kiekviename skyriuje. Tarkime, kad naudojame klasterizacijos indeksą, kai visi darbuotojai, priklausantys tam pačiam Dept_ID, yra laikomi viename klasteryje, o indekso rodyklės nurodo į visą klasterį. Čia Dept_Id yra neunikalus raktas.
Ankstesnė schema yra mažai paini, nes vieną disko bloką dalijasi įrašai, priklausantys kitam klasteriui. Jei atskiriems klasteriams naudojame atskirą disko bloką, tai vadinama geresne technika.
Antrinis indeksas
Retai indeksuojant, didėjant lentelės dydžiui, didėja ir atvaizdavimo dydis. Šie atvaizdai paprastai laikomi pirminėje atmintyje, kad adresų gavimas būtų greitesnis. Tada antrinė atmintis ieško faktinių duomenų pagal adresą, gautą iš kartografavimo. Jei susiejimo dydis didėja, adreso gavimas tampa lėtesnis. Šiuo atveju retas indeksas nebus efektyvus. Siekiant išspręsti šią problemą, įvedamas antrinis indeksavimas.
Antriniame indeksavime, siekiant sumažinti atvaizdavimo dydį, įvedamas kitas indeksavimo lygis. Taikant šį metodą, iš pradžių parenkamas didžiulis stulpelių diapazonas, kad pirmojo lygio atvaizdavimo dydis būtų mažas. Tada kiekvienas diapazonas dar padalijamas į mažesnius diapazonus. Pirmojo lygio atvaizdavimas saugomas pirminėje atmintyje, todėl adreso gavimas yra greitesnis. Antrojo lygio atvaizdavimas ir faktiniai duomenys saugomi antrinėje atmintyje (kietajame diske).
Pavyzdžiui:
- Jei diagramoje norite rasti 111 metimo įrašą, jis ieškos aukščiausio įrašo, kuris yra mažesnis arba lygus 111 pirmojo lygio indekse. Šiame lygyje jis gaus 100.
- Tada antrame indekso lygyje jis vėl pasiekia maksimalų (111)<= 111 and gets 110. now using the address 110, it goes to data block starts searching each record till 111. < li>
- Taip šiuo metodu atliekama paieška. Įterpimas, atnaujinimas arba ištrynimas taip pat atliekamas tokiu pačiu būdu. =>