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
SELECTcu condițiiWHEREșiJOIN. - 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).