Sari la conținut
Indexarea: cum găsește o bază de date rapid ceea ce cauți
Tech

Indexarea: cum găsește o bază de date rapid ceea ce cauți

Un index este o structură ajutătoare pe care o bază de date o ține separat de datele propriu-zise, ca să găsească rapid rândurile căutate fără să citească tot tabelul. Funcționează ca indexul de la sfârșitul unei cărți: în loc să răsfoiești toate paginile, mergi direct la locul potrivit. Prețul este spațiul în plus și un efort suplimentar la fiecare modificare a datelor.

Fără index, o bază de date care caută un client după nume trebuie să parcurgă rând cu rând întregul tabel, operație numită parcurgere completă. La câteva sute de rânduri nu se simte, dar la milioane de înregistrări diferența dintre o secundă și o fracțiune de milisecundă devine decisivă. Pentru a înțelege ce loc ocupă indexul în ansamblu, merită citit materialul despre bazele de date și organizarea informației.

Cum arată un index din interior

Cel mai des, un index este organizat ca un arbore echilibrat: o structură în care valorile sunt ordonate, iar căutarea coboară pe niveluri, eliminând la fiecare pas o mare parte din posibilități. Din acest motiv, numărul de pași crește foarte încet chiar dacă tabelul devine uriaș. Alte tipuri de indexuri, bazate pe funcții de dispersie sau pe cuvinte din texte, rezolvă probleme diferite.

Fiecare intrare din index conține valoarea căutată și o trimitere la locul unde se află rândul complet. Când cauți, baza de date folosește mai întâi indexul, apoi merge direct la rândul indicat.

Principalele tipuri de indexuri, comparate

Tip de index Pentru ce e potrivit Limite
Arbore ordonat Căutări exacte, intervale de valori, sortări Ocupă spațiu și încetinește scrierile
Dispersie (hash) Căutări exacte după o valoare Nu ajută la intervale sau la sortare
Index pe text Căutarea cuvintelor în conținut lung Cere configurare și mai mult spațiu
Index compus Căutări după mai multe câmpuri împreună Ordinea câmpurilor contează mult
Fără index Tabele mici, rar interogate Devine lent când datele cresc

Ce avantaje aduce

  • Viteza interogărilor. Căutările, filtrările și sortările devin mult mai rapide pe tabele mari.
  • Verificarea unicității. Un index unic împiedică apariția a două înregistrări cu aceeași valoare, de pildă două conturi cu același e-mail.
  • Legături mai rapide între tabele. Joncțiunile, adică potrivirea rândurilor din tabele diferite, beneficiază de indexuri pe câmpurile folosite.

Ce costuri are

Un index nu este gratuit. Ocupă spațiu pe disc și în memorie, iar la fiecare adăugare, modificare sau ștergere de rânduri baza de date trebuie să actualizeze și indexul. Într-un tabel cu foarte multe scrieri și puține citiri, prea multe indexuri pot încetini sistemul. Regula practică este să indexezi câmpurile folosite des în căutări, filtre și legături, nu pe toate.

Când un index nu ajută

Dacă un câmp are puține valori diferite, de exemplu o coloană cu doar două stări, indexul aduce puțin câștig, pentru că tot ar trebui parcurs un număr mare de rânduri. De asemenea, o interogare care transformă câmpul înainte de comparare, de exemplu aplicând o funcție pe fiecare valoare, poate ocoli indexul. Aceste capcane sunt motive pentru care specialiștii examinează planul de execuție al unei interogări înainte de a decide.

Un exemplu din viața de zi cu zi

Gândește-te la un magazin online cu un milion de produse. Când cauți după categorie și preț, fără indexuri, sistemul ar citi toate produsele. Cu un index potrivit pe categorie și preț, el sare direct la zona relevantă. Același principiu apare în căutarea contactelor din telefon, în filtrarea tranzacțiilor din aplicația bancară și în orice listă care răspunde repede, chiar dacă în spate sunt multe date.

Cum alegi ce indexezi

Un punct de plecare practic este să te uiți la întrebările pe care aplicația le pune cel mai des bazei de date. Dacă o pagină de listă filtrează mereu după dată și stare, acele câmpuri sunt candidate bune. Dacă un tabel este legat de altul printr-un identificator, câmpul de legătură merită, de obicei, indexat. Dacă un câmp se actualizează la fiecare secundă, prudența e mai mare, pentru că fiecare modificare obligă baza să reorganizeze și indexul.

Un alt criteriu este selectivitatea: cât de bine separă valorile rândurile. O adresă de e-mail aproape unică este foarte selectivă și se pretează la un index. O coloană cu două valori posibile separă prost și aduce puțin. Testarea pe date reale, nu doar pe exemple mici, arată adevărata diferență.

Indexarea și motoarele de căutare nu sunt același lucru

Termenul se folosește în mai multe contexte. În baze de date, indexarea ajută la regăsirea rândurilor. În motoarele de căutare web, indexarea înseamnă ca paginile să fie citite și incluse într-un registru, pentru a putea fi afișate la căutări. Ideea de bază este asemănătoare, adică pregătirea datelor pentru a fi găsite repede, dar sistemele și scopurile sunt diferite.

Cum gândesc specialiștii indexarea

Un ultim detaliu: indexurile nu rămân perfecte pentru totdeauna. După ani de modificări, ele pot deveni fragmentate, iar administratorii le reconstruiesc din când în când pentru a păstra viteza. În serviciile mari, acest lucru se face automat, fără ca utilizatorul să observe. În schimb, atunci când o aplicație devine brusc mai lentă fără un motiv clar, verificarea indexurilor este printre primele lucruri pe care le face un specialist.

Un administrator nu adaugă indexuri la întâmplare. Observă care sunt interogările lente, verifică ce câmpuri folosesc și testează efectul unui index nou. La fel de important este să elimine indexurile nefolosite, care consumă resurse fără beneficii. Pentru o imagine de ansamblu asupra temelor de acest fel, vezi secțiunea despre cloud și date. Pentru explicații pe înțeles despre tehnologie în general, LumeaTehnologiei reunește materiale pentru cititori fără pregătire tehnică.