SQL - Indici

Gli indici sono special lookup tablesche il motore di ricerca del database può utilizzare per accelerare il recupero dei dati. In poche parole, un indice è un puntatore ai dati in una tabella. Un indice in un database è molto simile a un indice sul retro di un libro.

Ad esempio, se si desidera fare riferimento a tutte le pagine di un libro che tratta un determinato argomento, fare prima riferimento all'indice, che elenca tutti gli argomenti in ordine alfabetico e quindi a uno o più numeri di pagina specifici.

Un indice aiuta ad accelerare SELECT domande e WHERE clausole, ma rallenta l'inserimento dei dati, con l'estensione UPDATE e il INSERTdichiarazioni. Gli indici possono essere creati o eliminati senza alcun effetto sui dati.

La creazione di un indice coinvolge il CREATE INDEX istruzione, che consente di assegnare un nome all'indice, di specificare la tabella e quale colonna o colonne indicizzare e di indicare se l'indice è in ordine crescente o decrescente.

Gli indici possono anche essere unici, come il file UNIQUE vincolo, in quanto l'indice impedisce voci duplicate nella colonna o combinazione di colonne su cui è presente un indice.

Il comando CREATE INDEX

La sintassi di base di un file CREATE INDEX è come segue.

CREATE INDEX index_name ON table_name;

Indici a colonna singola

Viene creato un indice a colonna singola in base a una sola colonna della tabella. La sintassi di base è la seguente.

CREATE INDEX index_name
ON table_name (column_name);

Indici unici

Gli indici univoci vengono utilizzati non solo per le prestazioni, ma anche per l'integrità dei dati. Un indice univoco non consente l'inserimento di valori duplicati nella tabella. La sintassi di base è la seguente.

CREATE UNIQUE INDEX index_name
on table_name (column_name);

Indici compositi

Un indice composto è un indice su due o più colonne di una tabella. La sua sintassi di base è la seguente.

CREATE INDEX index_name
on table_name (column1, column2);

Indipendentemente dal fatto che si crei un indice a colonna singola o un indice composto, prendere in considerazione le colonne che è possibile utilizzare molto frequentemente nella clausola WHERE di una query come condizioni di filtro.

Se deve essere utilizzata una sola colonna, la scelta dovrebbe essere un indice a colonna singola. Dovrebbero esserci due o più colonne utilizzate di frequente nella clausola WHERE come filtri, l'indice composto sarebbe la scelta migliore.

Indici impliciti

Gli indici impliciti sono indici che vengono creati automaticamente dal server di database quando viene creato un oggetto. Gli indici vengono creati automaticamente per vincoli di chiave primaria e vincoli univoci.

Il comando DROP INDEX

Un indice può essere eliminato utilizzando SQL DROPcomando. È necessario prestare attenzione quando si rilascia un indice perché le prestazioni potrebbero rallentare o migliorare.

La sintassi di base è la seguente:

DROP INDEX index_name;

È possibile controllare il capitolo Vincolo INDICE per vedere alcuni esempi reali sugli indici.

Quando si dovrebbero evitare gli indici?

Sebbene gli indici abbiano lo scopo di migliorare le prestazioni di un database, a volte dovrebbero essere evitati.

Le seguenti linee guida indicano quando è necessario riconsiderare l'uso di un indice.

  • Gli indici non devono essere utilizzati su tavolini.

  • Tabelle con aggiornamenti batch frequenti e di grandi dimensioni o operazioni di inserimento.

  • Gli indici non devono essere utilizzati su colonne che contengono un numero elevato di valori NULL.

  • Le colonne che vengono manipolate di frequente non devono essere indicizzate.