- Indexarea este utilizată pentru a optimiza performanța unei baze de date prin minimizarea numărului de accesări la disc necesare atunci când o interogare este procesată.
- Indexul este un tip de structură de date. Este folosit pentru a localiza și accesa rapid datele dintr-un tabel de bază de date.
Structura indexului:
Indecșii pot fi creați folosind unele coloane ale bazei de date.
- Prima coloană a bazei de date este cheia de căutare care conține o copie a cheii primare sau a cheii candidate a tabelului. Valorile cheii primare sunt stocate în ordine sortată, astfel încât datele corespunzătoare să poată fi accesate cu ușurință.
- A doua coloană a bazei de date este referința de date. Conține un set de pointeri care dețin adresa blocului de disc unde poate fi găsită valoarea cheii particulare.
Metode de indexare
Indici ordonați
Indicii sunt de obicei sortați pentru a face căutarea mai rapidă. Indicii care sunt sortați sunt cunoscuți ca indici ordonați.
Exemplu : Să presupunem că avem un tabel de angajați cu mii de înregistrări și fiecare dintre ele are o lungime de 10 octeți. Dacă ID-urile lor încep cu 1, 2, 3... și așa mai departe și trebuie să căutăm studentul cu ID-543.
- În cazul unei baze de date fără index, trebuie să căutăm blocul de disc de la pornire până când ajunge la 543. SGBD-ul va citi înregistrarea după citirea 543*10=5430 octeți.
- În cazul unui index, vom căuta folosind indexuri, iar SGBD-ul va citi înregistrarea după citirea a 542*2= 1084 octeți care sunt foarte puțini în comparație cu cazul precedent.
Index primar
- Dacă indexul este creat pe baza cheii primare a tabelului, atunci este cunoscut ca indexare primară. Aceste chei primare sunt unice pentru fiecare înregistrare și conțin o relație 1:1 între înregistrări.
- Deoarece cheile primare sunt stocate în ordine sortată, performanța operației de căutare este destul de eficientă.
- Indicele primar poate fi clasificat în două tipuri: indice dens și indice rar.
Indice dens
- Indexul dens conține o înregistrare index pentru fiecare valoare cheie de căutare din fișierul de date. Face căutarea mai rapidă.
- În aceasta, numărul de înregistrări din tabelul index este același cu numărul de înregistrări din tabelul principal.
- Are nevoie de mai mult spațiu pentru a stoca în sine înregistrarea indexului. Înregistrările index au cheia de căutare și un indicator către înregistrarea reală de pe disc.
Indice rar
- În fișierul de date, înregistrarea index apare doar pentru câteva elemente. Fiecare element indică un bloc.
- În aceasta, în loc să indice fiecare înregistrare din tabelul principal, indexul indică înregistrările din tabelul principal într-un interval.
Indicele de grupare
- Un index grupat poate fi definit ca un fișier de date ordonat. Uneori, indexul este creat pe coloane non-cheie primară, care pot să nu fie unice pentru fiecare înregistrare.
- În acest caz, pentru a identifica înregistrarea mai rapid, vom grupa două sau mai multe coloane pentru a obține valoarea unică și a crea un index din ele. Această metodă se numește index de grupare.
- Înregistrările care au caracteristici similare sunt grupate și sunt creați indici pentru acest grup.
Exemplu : să presupunem că o companie conține mai mulți angajați în fiecare departament. Să presupunem că folosim un index de grupare, în care toți angajații care aparțin aceluiași Dept_ID sunt considerați într-un singur cluster, iar pointerii de index indică clusterul ca întreg. Aici Dept_Id este o cheie non-unica.
Schema anterioară este puțin confuză, deoarece un bloc de disc este partajat de înregistrări care aparțin unui cluster diferit. Dacă folosim blocuri de disc separate pentru clustere separate, atunci se numește tehnică mai bună.
Index secundar
În indexarea rară, pe măsură ce dimensiunea tabelului crește, crește și dimensiunea mapării. Aceste mapări sunt de obicei păstrate în memoria primară, astfel încât preluarea adresei să fie mai rapidă. Apoi memoria secundară caută datele reale pe baza adresei obținute din mapare. Dacă dimensiunea maparii crește, atunci preluarea adresei în sine devine mai lentă. În acest caz, indicele rar nu va fi eficient. Pentru a depăși această problemă, se introduce indexarea secundară.
În indexarea secundară, pentru a reduce dimensiunea cartografierii, este introdus un alt nivel de indexare. În această metodă, intervalul uriaș pentru coloane este selectat inițial, astfel încât dimensiunea mapării primului nivel să devină mică. Apoi fiecare interval este împărțit în continuare în intervale mai mici. Maparea primului nivel este stocată în memoria primară, astfel încât preluarea adresei este mai rapidă. Maparea celui de-al doilea nivel și datele reale sunt stocate în memoria secundară (hard disk).
De exemplu:
- Dacă doriți să găsiți înregistrarea rolului 111 în diagramă, atunci va căuta cea mai înaltă intrare care este mai mică sau egală cu 111 în indicele de prim nivel. Va primi 100 la acest nivel.
- Apoi, în al doilea nivel de index, din nou face max (111)<= 111 and gets 110. now using the address 110, it goes to data block starts searching each record till 111. < li>
- Așa se efectuează o căutare în această metodă. Inserarea, actualizarea sau ștergerea se face, de asemenea, în același mod. =>