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:
- 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.
- 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.
- 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.
- 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);