Sobes.tech
Middle

Kako indeks optimizuje izvršenje upita?

sobes.tech АИ

Одговор од АИ

Indeks je struktura podataka (obično B-stablo) koja čuva mali deo podataka tabele i linkove do odgovarajućih redova u glavnoj tabeli.

Proces optimizacije:

  1. Brza pretraga: Umesto potpunog skeniranja cele tabele (full table scan), sistem za upravljanje bazama podataka (DBMS) pretražuje indeks. Indeks je sortirani i optimizovani za brzu pretragu po određenim kolonama.
  2. Smanjenje obima čitanih podataka: Indeks sadrži samo indeksirane kolone i pokazivače, što značajno smanjuje količinu podataka koje je potrebno pročitati sa diska u poređenju sa čitanjem cele reda ili cele stranice podataka.
  3. Nema sortiranja: Indeks je već sortirani po indeksiranim kolonama. To eliminiše potrebu za izvođenjem skupog operacije sortiranja ako zahtev za upitom traži sortirani rezultat.
  4. Optimizacija JOIN operacija: Pri spajanju tabela (JOIN) po indeksiranim kolonama, DBMS može koristiti indeks za brzo pronalaženje odgovarajućih redova u drugoj tabeli, umesto izvođenja ugnježdenih petlji kroz celu tabelu.

Primer:

Bez indeksa na koloni LastName za upit SELECT * FROM Users WHERE LastName = 'Ivanov', DBMS bi morao da pročita svaki red u tabeli Users i proveri vrednost LastName.

Sa indeksom na LastName, DBMS brzo pronalazi zapise gde je LastName jednak 'Ivanov', pretražujući sortirani indeks, a zatim koristi pokazivače iz indeksa da dobije potpune podatke redova iz glavne tabele.

-- Primer upita koji koristi indeks na LastName
SELECT UserId, FirstName
FROM Users
WHERE LastName = 'Ivanov';
-- Primer kreiranja indeksa za optimizaciju gore navedenog upita
CREATE INDEX IX_Users_LastName ON Users (LastName);