Sobes.tech
Junior

Ce este indexarea în contextul bazelor de date sau colecțiilor?

sobes.tech AI

Răspuns de la AI

Indexarea este o tehnică de optimizare a performanței în extragerea datelor.

În bazele de date, un index este o structură (de exemplu, un arbore B) care permite găsirea rapidă a rândurilor dintr-un tabel, fără a scana întregul tabel. Se creează pe una sau mai multe coloane.

În colecții (de exemplu, ArrayList în Java), indexarea este în esență încorporată. Elementele sunt stocate într-o secvență ordonată, iar accesul la orice element după index (numărul său de ordine) se face în O(1).

Obiectivele principale ale indexării:

  • Accelerează executarea interogărilor: În special pentru operațiuni SELECT cu condiții WHERE și JOIN.
  • Asigură unicitatea: Indicii unici garantează că valorile din coloana indexată sau combinația de coloane vor fi unice.
  • Suport pentru sortare: Indicii pot fi folosiți pentru sortarea rapidă a rezultatelor (ORDER BY).

Exemple de utilizare în SQL:

-- Crearea unui index pe coloana price
CREATE INDEX idx_products_price ON products (price);

-- Crearea unui index compus pe coloanele customer_id și order_date
CREATE INDEX idx_orders_customer_date ON orders (customer_id, order_date);

În colecții, accesul după index:

// Obținerea elementului după index
List<String> names = new ArrayList<>();
names.add("Alice");
names.add("Bob");
String firstElement = names.get(0); // Acces după index 0

Dezavantajele indexării:

  • Ocupă spațiu suplimentar pe disc.
  • Operațiile de modificare a datelor (INSERT, UPDATE, DELETE) devin mai lente, deoarece trebuie actualizat și indexul.
  • Nu sunt întotdeauna utilizate de optimizatorul de interogări (de exemplu, în scanări complete ale tabelului).