Sobes.tech
Middle

Cum optimizează un index executarea unei interogări?

sobes.tech AI

Răspuns de la AI

Indexul este o structură de date (de obicei un arbore B) care stochează o mică parte din datele tabelului și referințe către rândurile corespunzătoare din tabelul principal.

Procesul de optimizare:

  1. Căutare rapidă: În loc să scaneze întregul tabel (scanare completă), sistemul de gestionare a bazelor de date (SGBD) parcurge indexul. Indexul este sortat și optimizat pentru căutări rapide pe anumite coloane.
  2. Reducerea volumului de date citite: Indexul conține doar coloanele indexate și indicatoare, ceea ce reduce semnificativ volumul de date care trebuie citit de pe disc în comparație cu citirea întregii rânduri sau a întregii pagini de date.
  3. Fără sortare: Indexul este deja sortat după coloanele indexate. Acest lucru elimină necesitatea efectuării unei operațiuni costisitoare de sortare a seturilor de date dacă interogarea necesită rezultate sortate.
  4. Optimizarea operațiilor JOIN: La unirea tabelelor (JOIN) pe coloane indexate, SGBD poate folosi indexul pentru a găsi rapid rândurile corespunzătoare dintr-un alt tabel, în loc să execute bucle imbricate pe întregul tabel.

Exemplu:

Fără index pe coloana LastName pentru interogarea SELECT * FROM Users WHERE LastName = 'Ivanov', SGBD-ul ar trebui să citească fiecare rând din tabelul Users și să verifice valoarea LastName.

Cu index pe LastName, SGBD-ul găsește rapid înregistrările unde LastName este egal cu 'Ivanov', parcurgând indexul sortat și apoi folosind indicatoarele din index pentru a obține datele complete ale rândurilor din tabelul principal.

-- Exemplu de interogare care beneficiază de indexul pe LastName
SELECT UserId, FirstName
FROM Users
WHERE LastName = 'Ivanov';
-- Exemplu de creare a unui index pentru a optimiza interogarea de mai sus
CREATE INDEX IX_Users_LastName ON Users (LastName);