Indeksiranje u DBMS-u: Što je, vrste indeksa s PRIMJERIMA
⚡ Pametni sažetak
Indeksiranje u bazi podataka je tehnika strukture podataka koja brzo dohvaća zapise pomoću mapeping ključ pretraživanja za adresu diska njegovog zapisa. Primarno, sekundarno, klasteriranje, višerazinsko i B-stablo indeksiraju svaki prostor, brzinu i održavanje drugačije.

Što je indeksiranje?
Indeksiranje je tehnika strukture podataka koja vam omogućuje brzo dohvaćanje zapisa iz datoteke baze podataka. Indeks je mala tablica koja ima samo dva stupca. Prvi stupac sadrži kopiju primarnog ili kandidatskog ključa tablice. Drugi stupac sadrži skup upućuje koji sadrži adresu bloka diska gdje je pohranjena ta specifična ključna vrijednost.
Indeks:
- Prima ključ za pretraživanje kao ulaz.
- Učinkovito vraća zbirku podudarnih zapisa.
Bez indeksa, baza podataka mora skenirati svaki redak kako bi odgovorila na upit. S indeksom, skače izravno na odgovarajući blok, zbog čega odabrana vrsta indeksa ima veliki utjecaj na performanse.
Vrste indeksiranja u DBMS-u

Indeksiranje u bazi podataka definirano je na temelju njezinih atributa indeksiranja. Dvije glavne vrste metoda indeksiranja su:
- Primarno indeksiranje
- Sekundarno indeksiranje
Primarni indeks u DBMS-u
Primarni indeks je uređena datoteka fiksne duljine s dva polja. Prvo polje je isto što i primarni ključ, a drugo polje pokazuje na taj specifični blok podataka. U primarnom indeksu uvijek postoji odnos jedan-na-jedan između unosa u tablici indeksa.
Primarni indeks je također dalje podijeljen u dvije vrste:
- Gusti indeks
- Rijetki indeks
Gusti indeks
U gustom indeksu, zapis se stvara za svaku vrijednost ključa pretraživanja u bazi podataka. To vam pomaže brže pretraživanje, ali zahtijeva više prostora za pohranu zapisa indeksa. U ovoj metodi, zapisi sadrže vrijednost ključa pretraživanja i pokazuju na stvarni zapis na disku.
Rijetki indeks
Rijetki indeks je indeksni zapis koji se pojavljuje samo za neke vrijednosti u datoteci. Rijetki indeks pomaže vam u rješavanju problema gustog indeksiranja u DBMSU ovoj tehnici, niz indeksnih stupaca pohranjuje istu adresu bloka podataka, a kada je potrebno dohvatiti podatke, dohvaća se ta adresa bloka.
Rijetki indeks pohranjuje indeksne zapise samo za neke vrijednosti ključeva za pretraživanje. Potrebno mu je manje prostora i manje troškova održavanja za umetanje i brisanje, ali je sporiji od gustog indeksa za lociranje zapisa.
U nastavku je primjer rijetkog indeksa baze podataka.
Gusti indeks vs. rijetki indeks
Dvije primarne varijante indeksa imaju suprotne kompromise, sažete u nastavku.
| Aspekt | Gusti indeks | Rijetki indeks |
|---|---|---|
| Prijave | Jedan po ključu za pretraživanje | Jedan po bloku |
| Prostor | više | Less |
| Brzina pretraživanja | Brže | sporiji |
| održavanje | Viši | Spustite |
Sekundarni indeks u DBMS-u
Sekundarni indeks u DBMS-u može se generirati poljem koje ima jedinstvenu vrijednost za svaki zapis i trebalo bi biti kandidat za ključ. Također je poznat kao indeks bez klasteriranja.
Ova tehnika indeksiranja baze podataka na dvije razine koristi se za smanjenje mapeping veličina prve razine. Za prvu razinu odabran je veliki raspon brojeva, tako da kartaping veličina uvijek ostaje mala.
Primjer sekundarnog indeksa
Razumijemo sekundarno indeksiranje na primjeru indeksa baze podataka. U bazi podataka bankovnih računa, podaci se pohranjuju sekvencijalno prema acc_no, ali možda želite pronaći sve račune u određenoj poslovnici ABC banke.
Ovdje možete imati sekundarni indeks za svaki ključ pretraživanja. Zapis indeksa pokazuje na spremnik koji sadrži pokazivače na sve zapise s tom specifičnom vrijednošću ključa pretraživanja.
ClusterIndeksiranje u DBMS-u
U klasteriranom indeksu, sami zapisi su pohranjeni u indeksu, a ne pokazivači. Ponekad se indeks stvara na stupcima koji nisu primarni ključ, a koji možda nisu jedinstveni za svaki zapis. U takvoj situaciji možete grupirati dva ili više stupaca kako biste dobili jedinstvene vrijednosti i stvorili indeks, koji se naziva klasterirani indeks. To vam također pomaže da brže identificirate zapis.
Primjer: Pretpostavimo da je tvrtka zaposlila mnogo zaposlenika u raznim odjelima. U tom slučaju, indeks klasteriranja treba stvoriti za sve zaposlenike koji pripadaju istom odjelu.
Smatraju se jednim klasterom, a indeks pokazuje na klaster kao cjelinu. Ovdje je Department_no nejedinstveni ključ.
Što je višerazinski indeks?
Višerazinsko indeksiranje stvara se kada primarni indeks ne stane u memoriju. Kod ove vrste metode indeksiranja možete smanjiti broj pristupa disku kako biste došli do bilo kojeg zapisa. Zapisi se čuvaju na disku kao sekvencijalna datoteka, a na vrhu te datoteke stvara se rijetki indeks.
Indeks B-stabla
B-stablo indeks je najčešće korištena struktura podataka za indeksiranje temeljeno na stablu u DBMS-u. To je višerazinski format indeksiranja temeljenog na stablu koji koristi uravnoteženo stabla binarnog pretraživanjaSvi listovi B-stabla sadrže stvarne pokazivače podataka.
Štoviše, svi listovi čvorovi su međusobno povezani povezanom listom, što omogućuje B-stablu da podržava i slučajni i sekvencijalni pristup.
- Listni čvorovi moraju imati između 2 i 4 vrijednosti.
- Svaki put od korijena do lista je uglavnom jednake duljine.
- Ne-listni čvorovi, osim korijenskog čvora, imaju između 3 i 5 podređenih čvorova.
- Svaki čvor koji nije korijen ili list ima između n/2 i n djece.
Gdje dominiraju pretraživanja s točnim podudaranjem, a skeniranje raspona je rijetko, raspršivanja može biti brža alternativa indeksu B-stabla.
Prednosti indeksiranja
Važne prednosti indeksiranja su:
- Pomaže u smanjenju ukupnog broja I/O operacija potrebnih za dohvaćanje podataka, tako da ne morate pristupati retku izravno iz tablice.
- Omogućuje korisnicima brže pretraživanje i dohvaćanje podataka.
- Može smanjiti prostor u tablici jer ne morate pohranjivati ROWID u indeksu za svaki povezani redak.
- Podaci u listovima već su sortirani prema vrijednosti ključa.
Nedostaci indeksiranja
Važni nedostaci indeksiranja su:
- Za izvođenje indeksiranja potreban vam je primarni ključ u tablici s jedinstvenom vrijednošću.
- Ne možete izgraditi drugi indeks na podacima koji su već organizirani na isti način.
- Nije vam dopušteno particionirati indeksno organiziranu tablicu.
- Indeksiranje smanjuje performanse u upitima INSERT, DELETE i UPDATE.





