Uvod

U radu sa bazama podataka često se susrećemo sa velikim količinama podataka. Zamislimo tabelu sa nekoliko hiljada ili miliona redova. Postavlja se pitanje: kako brzo pronaći traženi podatak?

Ako baza nema nikakav dodatni mehanizam za pretragu, sistem mora da pregleda svaki red – što može biti sporo. Upravo tu nastupaju indeksi.

Indeks u bazi podataka možemo zamisliti kao sadržaj knjige. Umesto da listamo celu knjigu da bismo pronašli određenu temu, pogledamo sadržaj i odmah znamo gde da tražimo.


1. Šta je indeks?

Indeks je struktura podataka koja omogućava brže pretraživanje i pristup podacima u tabeli.

  • Bez indeksa → pretraga ide redom (sporo)

  • Sa indeksom → koristi se optimizovana struktura (brzo)

Indeksi se najčešće prave nad kolonama koje se često koriste u: WHERE uslovima, JOIN operacijama, ORDER BY sortiranju, ...


2. Kako indeks funkcioniše 

Zamislimo tabelu učenika:

ID Ime Prezime
1 Marko Marković
2 Ana Petrović
3 Ivan Jovanović

Ako tražimo učenika sa prezimenom Petrović:

  • Bez indeksa: sistem proverava svaki red

  • Sa indeksom: sistem koristi "mapu" i odmah pronalazi podatak


3. Tipovi indeksa

U MS SQL Server-u najvažniji su:

1. Clustered indeks

  • Fizički sortira podatke u tabeli - > Tabela može imati samo jedan clustered indeks

2. Non-clustered indeks

  • Pravi posebnu strukturu (kao pokazivač) -> Može ih biti više

Dovoljno je razumeti da Clustered organizuje podatke, a Non-clustered pokazuje gde su podaci


4. Kreiranje indeksa

Sintaksa:

CREATE INDEX naziv_indeksa
ON naziv_tabele (kolona);

Primer:

CREATE INDEX idx_prezime
ON Ucenici (Prezime);

Ovim smo ubrzali pretragu po koloni Prezime.


5. Kreiranje unique indeksa

Ako želimo da sprečimo duplikate:

CREATE UNIQUE INDEX idx_email
ON Korisnici (Email);

Ovo znači:

  • Nema dva ista email-a

  • Istovremeno se ubrzava pretraga


6. Brisanje (odbacivanje) indeksa

Sintaksa:

DROP INDEX naziv_tabele.naziv_indeksa;

Primer:

DROP INDEX Ucenici.idx_prezime;

7. Kada koristiti indeks?

Indeks treba koristiti kada tabela ima mnogo podataka i često pretražujemo po određenoj koloni.

Ne treba ih koristiti kada tabela ima malo podataka ili se  kolona se koristi ili često menjamo podatke (INSERT, UPDATE)


8. Prednosti i mane indeksa

Prednosti: Brža pretraga, Bolje performanse, ...

Mane: Zauzimaju dodatni prostor, Usporavaju unos i izmenu podataka, ...


Praktični deo (rad u MS SQL Server 2008)

Kreiranje tabele

CREATE TABLE Ucenici (
    UcenikID INT PRIMARY KEY,
    Ime NVARCHAR(50),
    Prezime NVARCHAR(50),
    Grad NVARCHAR(50)
);

Unos podataka

INSERT INTO Ucenici VALUES (1, 'Marko', 'Marković', 'Novi Sad');
INSERT INTO Ucenici VALUES (2, 'Ana', 'Petrović', 'Beograd');
INSERT INTO Ucenici VALUES (3, 'Ivan', 'Jovanović', 'Niš');

Dodavanje indeksa

CREATE INDEX idx_grad
ON Ucenici (Grad);

Zadaci za vežbu

Zadatak 1: Kreirati indeks nad kolonom Ime u tabeli Ucenici.


Zadatak 2: Kreirati unique indeks nad kolonom ID.


Zadatak 3: Obrisati indeks idx_grad.


Zadatak 4: Dodati kolonu Email i napraviti unique indeks nad njom.


********************

   ** uređivanje lekcije nije završeno **

********************

Last modified: Friday, 27 March 2026, 8:20 AM