Junior
În ce cazuri sunt utilizate indicii în bazele de date?
sobes.tech AI
Răspuns de la AI
Indecii din bazele de date sunt folosiți pentru a optimiza viteza de executare a interogărilor, în special:
- Căutarea datelor: Accelerarea operațiunilor
SELECT, în special cu condițiiWHERE,JOINșiORDER BY. Indicele permite SGBD-ului să găsească mai rapid rândurile necesare, fără a scana întreaga tabelă. - Sortare: Accelerarea sortării cu
ORDER BY. Dacă coloanele de sortare au un index, SGBD-ul poate să le utilizeze, evitând operații suplimentare de sortare. - Îmbinarea tabelelor: Accelerarea operațiunilor
JOINpe coloane indexate. Indicele ajută la găsirea rapidă a rândurilor corespunzătoare în tabelele legate. - Unicitatea datelor: Garanția unicitații valorilor dintr-o coloană (printr-un index unic).
- Cheile primare: Cheia primară este, implicit, un index unic și este folosită pentru acces rapid la rând printr-un identificator unic.
- Cheile secundare: Sunt folosite pentru a asigura integritatea referențială și pentru a accelera operațiunile
JOINîntre tabele legate.
Exemple de coloane pentru indexare:
- Coloane căutate frecvent (
WHERE uid = 123). - Coloane folosite în condiții
JOIN(table1.id = table2.ref_id). - Coloane frecvent sortate (
ORDER BY created_at DESC). - Coloane cu cardinalitate ridicată (mulți valori unice).
Cazuri în care indecșii pot fi ineficienți sau inutili:
- Tabele foarte mici: În tabele mici, scanarea poate fi mai rapidă sau comparabilă cu căutarea după index.
- Coloane cu cardinalitate scăzută: Un index pe o coloană cu puține valori unice (de exemplu, un câmp boolean TRUE/FALSE) poate să nu aducă o accelerare semnificativă.
- Operațiuni frecvente de scriere (INSERT, UPDATE, DELETE): Indecșii necesită actualizare la modificarea datelor, ceea ce poate încetini operațiunile de scriere. Nu este recomandat să indexați toate coloanele aleatoriu.
- Coloane în condiții
WHEREcu funcții: Dacă se aplică o funcție pe coloană înWHERE(de exemplu,WHERE YEAR(date_column) = 2023), indexul normal pedate_columnnu este utilizat. Se poate folosi un index funcțional (dacă este suportat de SGBD) sau se rescrie interogarea.