Sobes.tech
Junior

Cos'è l'indicizzazione nel contesto di database o collezioni?

sobes.tech AI

Risposta dell'AI

L'indicizzazione è una tecnica di ottimizzazione delle prestazioni durante l'estrazione dei dati.

Nei database, un indice è una struttura (ad esempio, un albero B) che consente di trovare rapidamente le righe in una tabella senza dover scansionare l'intera tabella. Viene creato su una o più colonne.

Nelle collezioni (ad esempio, ArrayList in Java), l'indicizzazione è essenzialmente incorporata. Gli elementi sono memorizzati in una sequenza ordinata, e l'accesso a qualsiasi elemento tramite indice (il suo numero di posizione) avviene in O(1).

Obiettivi principali dell'indicizzazione:

  • Accelerare l'esecuzione delle query: Soprattutto per operazioni SELECT con condizioni WHERE e JOIN.
  • Garantire l'unicità: Gli indici unici garantiscono che i valori nella colonna indicizzata o nella combinazione di colonne siano unici.
  • Supporto all'ordinamento: Gli indici possono essere usati per ordinare rapidamente i risultati (ORDER BY).

Esempi di utilizzo in SQL:

-- Creazione di un indice sulla colonna price
CREATE INDEX idx_products_price ON products (price);

-- Creazione di un indice composito sulle colonne customer_id e order_date
CREATE INDEX idx_orders_customer_date ON orders (customer_id, order_date);

Nelle collezioni, accesso tramite indice:

// Ottenere elemento tramite indice
List<String> names = new ArrayList<>();
names.add("Alice");
names.add("Bob");
String firstElement = names.get(0); // Accesso tramite indice 0

Svantaggi dell'indicizzazione:

  • Occupa spazio disco aggiuntivo.
  • Le operazioni di modifica dei dati (INSERT, UPDATE, DELETE) diventano più lente, poiché è necessario aggiornare anche l'indice.
  • Non sempre vengono utilizzati dall'ottimizzatore di query (ad esempio, durante scansioni complete della tabella).