Indici (Visual Database Tools)

È possibile utilizzare un indice per accedere rapidamente a informazioni specifiche in una tabella di database. Un indice è una struttura che ordina i valori di una o più colonne di una tabella di database, ad esempio la colonna cognome (lname) della tabella employee. Quando si cerca un dipendente specifico mediante il cognome, l'indice consente di ottenere tali informazioni più rapidamente rispetto a una ricerca in tutte le righe della tabella.

L'indice fornisce puntatori ai valori di dati archiviati in colonne specificate della tabella, quindi ordina tali puntatori in base ai criteri specificati. Nel database l'indice ha una funzione molto simile a quella dell'indice di un libro: l'indice viene ricercato per individuare un valore specifico, quindi si segue il puntatore fino alla riga contenente tale valore.

Nei diagrammi di database è possibile creare, modificare o eliminare ciascun tipo di indice nella Finestra di dialogo Indici/chiavi, nella Finestra di dialogo Indici XML o nella Finestra di dialogo Indice full-text di una tabella selezionata. L'indice viene salvato nel database quando si salva la tabella a cui è associato o quando si salva il diagramma in cui è presente la tabella. Per ulteriori informazioni, vedere Operazioni con gli indici.

Nota

Non tutti i database utilizzano gli indici allo stesso modo. Per ulteriori informazioni, vedere la documentazione relativa al database.

In genere, è opportuno creare un indice in una tabella soltanto se i dati nelle colonne indicizzate verranno richiesti di frequente. Gli indici occupano spazio su disco e rallentano le operazioni di aggiunta, eliminazione e aggiornamento delle righe. In molti casi, i vantaggi in termini di velocità offerti dagli indici per il recupero di dati compensano ampiamente tali svantaggi. Tuttavia, se l'applicazione aggiorna i dati molto di frequente o se esistono problemi di spazio su disco, può risultare utile limitare il numero di indici.

Prima di creare un indice, è necessario determinare quali colonne utilizzare e quale tipo di indice creare.

Colonne dell'indice

È possibile creare indici basati su una singola colonna o su più colonne di una tabella di database. Gli indici basati su più colonne consentono di fare distinzione fra le righe in cui una colonna potrebbe contenere lo stesso valore.

Gli indici risultano inoltre utili se si effettuano spesso ricerche o ordinamenti in base a due o più colonne alla volta. Se, ad esempio, si definiscono spesso criteri di selezione per le colonne del cognome e del nome nella stessa query, può risultare utile creare un indice basato su queste due colonne.

Per determinare l'utilità di un indice:

  • Esaminare le clausole WHERE e JOIN delle query. Ogni colonna inclusa in una di queste clausole è un possibile candidato per un indice.

  • Provare il nuovo indice per esaminarne gli effetti sulle prestazioni dell'esecuzione delle query.

  • Considerare il numero di indici già creati nella tabella. È consigliabile evitare un numero elevato di indici in una singola tabella.

  • Esaminare le definizioni degli indici già creati nella tabella. È consigliabile evitare indici sovrapposti che contengono colonne condivise.

  • Esaminare il numero di valori di dati univoci in una colonna e confrontare tale numero con il numero di righe nella tabella. Il risultato rappresenta la selettività di tale colonna, che può aiutare a decidere se una colonna può essere utilizzata per un indice e, in caso affermativo, per quale tipo di indice.

Tipi di indice

A seconda delle funzionalità del database, in Progettazione database è possibile creare tre tipi di indici: univoco, di chiave primaria e cluster. Per informazioni dettagliate sulle funzionalità di indicizzazione supportate dal database in uso, vedere la documentazione del database.

SuggerimentoSuggerimento

Sebbene un indice univoco faciliti l'individuazione delle informazioni, per prestazioni ottimali si consiglia di utilizzare vincoli univoci o di chiave primaria. Per ulteriori informazioni su questi vincoli, vedere Operazioni con i vincoli.

Indice univoco

Un indice univoco è un indice in cui due righe non possono avere lo stesso valore di indice.

La maggior parte dei database impedisce di salvare una tabella con un indice univoco appena creato quando sono presenti valori della chiave duplicati nei dati esistenti. Il database può inoltre impedire l'aggiunta di nuovi dati che creerebbero valori della chiave duplicati nella tabella. Se, ad esempio, si crea un indice univoco basato sul cognome del dipendente (lname) nella tabella employee, non potranno essere presenti due dipendenti con lo stesso cognome.

Per ulteriori informazioni sugli indici univoci, vedere Procedura: creare indici univoci.

Indice di chiave primaria

Una tabella di database spesso include una colonna o una combinazione di colonne il cui valore identifica ogni riga della tabella in modo univoco. Tale colonna è denominata chiave primaria della tabella.

Se si definisce una chiave primaria per una tabella in un diagramma di database, verrà creato automaticamente un indice di chiave primaria, che è un tipo specifico di indice univoco. Questo indice richiede che ogni valore nella chiave primaria sia univoco. Quando viene utilizzato nelle query, consente inoltre un rapido accesso ai dati. Per ulteriori informazioni sulle chiavi primarie, vedere Operazioni con le chiavi.

Indice cluster

In un indice cluster l'ordine fisico delle righe della tabella è uguale all'ordine logico (indicizzato) dei valori della chiave. Una tabella può contenere un solo indice cluster.

Se un indice non è di tipo cluster, l'ordine fisico delle righe nella tabella non corrisponderà all'ordine logico dei valori della chiave. Un indice cluster generalmente consente un accesso più rapido ai dati rispetto a un indice non cluster.

Per ulteriori informazioni sull'utilizzo di un indice cluster, vedere Procedura: creare indici cluster.

Indice full-text

Se si desidera eseguire ricerche full-text nelle colonne basate su testo delle tabelle di database, è possibile creare un indice full-text. Poiché un indice di questo tipo si basa su un indice normale, sarà necessario innanzitutto creare tale indice. L'indice normale deve essere creato utilizzando una sola colonna non Null, preferibilmente con valori non particolarmente elevati. Per ulteriori informazioni, vedere Procedura: creare indici.

Nota

Per creare un indice full-text, è necessario innanzitutto creare un catalogo utilizzando uno strumento esterno quale SQL Server Management Studio o Enterprise Manager.

Nota

La funzionalità degli indici full-text non è disponibile in Microsoft SQL Server Express 2005.

Indice XML

La finestra di dialogo Indici XML consente di creare indici per le colonne con tipo di dati XML, le quali non possono essere indicizzate utilizzando la finestra di dialogo Indici/chiavi. Ogni colonna XML può avere più indici XML, ma il primo indice creato (primario) verrà utilizzato come base degli altri. Eliminando l'indice XML primario, verranno eliminati anche gli altri. Per ulteriori informazioni sugli indici XML, vedere Procedura: creare indici XML.

Vedere anche

Riferimenti

Finestra di dialogo Indici/chiavi

Finestra di dialogo Relazioni chiavi esterne

Finestra di dialogo Indici XML

Finestra di dialogo Indice full-text

Altre risorse

Operazioni con gli indici

Operazioni con le chiavi