Qual è la differenza tra indice cluster e non cluster

Il differenza principale tra indice cluster e non cluster è quello c'è solo un indice cluster per tabella mentre ci sono più indici non cluster per tabella.

Innanzitutto, l'indicizzazione è una tecnica per recuperare i record dai file di database in modo semplice ed efficiente. Accelera le prestazioni della query per le applicazioni client che utilizzano il database. Inoltre, esistono due tipi di indici come indice cluster e non cluster. L'indice raggruppato modifica l'ordine in cui i dati sono archiviati nel disco. Tuttavia, in un indice non cluster, l'ordine logico dell'indice non corrisponde all'ordine fisico dei dati memorizzati nel disco.

Aree chiave coperte

1. Cos'è un indice
     - Definizione, Funzionalità
2. Che cos'è un indice cluster
     - Definizione, Funzionalità
3. Che cos'è un indice non cluster
     - Definizione, Funzionalità
4. Qual è la differenza tra indice cluster e non cluster
     - Confronto tra le principali differenze

Parole chiave

Indice cluster, indice non cluster

Cos'è un indice

Assumere una tabella che memorizza i dettagli del cliente. Ha tre colonne come nome, cognome e numero di contatto. Se non ci sono indici nella tabella, i dati verranno inseriti negli spazi liberi nella memoria senza alcun ordine particolare. Se l'utente richiede di ottenere il numero di telefono di un cliente specifico, è necessario cercare i dati dall'inizio. Anche se otteniamo i dati, è necessario continuare fino alla fine perché potrebbero esserci dati corrispondenti alla fine. Gli indici sono utili in queste situazioni.

Che cos'è un indice cluster

Un indice cluster modifica l'ordine in cui i dati vengono archiviati fisicamente. Dopo che i dati della tabella sono nell'ordine fisico, il DBMS crea pagine indice. Aiutano a navigare facilmente verso i dati richiesti. L'intera struttura con i dati della tabella di base è nota come indice cluster. Il processo di una query che passa attraverso la struttura ad albero dell'indice cluster ai dati della tabella di base viene chiamato ricerca dell'indice cluster. Esiste un indice cluster per tabella perché è impossibile organizzare fisicamente i dati in due modi diversi senza utilizzare strutture separate.

Che cos'è un indice non cluster

Un indice non cluster non ordina i dati fisici nella tabella. L'indice e la tabella sono memorizzati in luoghi diversi. Inoltre, ci sono puntatori o riferimenti ai dati nella tabella. È possibile memorizzare i dati in qualsiasi ordine poiché tale ordine è indipendente dai dati della tabella di base. Pertanto, può esserci più di un indice non cluster per tabella. I dati nella tabella di base sono in heap mentre i riferimenti sono identificatori di riga.

Quando si esegue una query su una colonna, il database va prima all'indice e cerca l'indirizzo della riga corrispondente nella tabella. Quindi, passa all'indirizzo di riga e recupera altri valori di colonna. Pertanto, gli indici non cluster sono più lenti degli indici cluster. Quando è presente una chiave univoca definita nella tabella, verrà creato automaticamente un indice non cluster.

Differenza tra indice cluster e non cluster

Definizione

Un indice cluster è un tipo di indice in cui i record della tabella vengono fisicamente riordinati per corrispondere all'indice. Un indice non cluster, d'altra parte, è un tipo speciale di indice in cui l'ordine logico dell'indice non corrisponde all'ordine fisico memorizzato delle righe sul disco. Queste definizioni spiegano la differenza tra indice cluster e non cluster.

Numero di indici

Il numero di indici per tabella è una differenza importante tra indice cluster e non cluster. Una tabella può avere un singolo indice cluster, ma più indici non cluster.

Funzionalità

L'indice cluster non memorizza i puntatori ai dati effettivi. Tuttavia, l'indice non cluster memorizza sia il valore che un puntatore alla riga effettiva che contiene i dati. Quindi, questa è un'altra differenza tra indice cluster e non cluster.

Ordine di memorizzazione dei dati

Inoltre, un indice cluster determina l'ordine di memorizzazione dei dati sul disco mentre un indice non cluster non ha alcun effetto sull'ordine di memorizzazione dei dati sul disco.

Spazio di memoria richiesto

Inoltre, un indice non cluster richiede più spazio di memoria rispetto a un indice cluster.

Velocità

La velocità è un'altra differenza tra indice cluster e non cluster. Gli indici non cluster sono più lenti degli indici cluster.

Conclusione

Esistono due tipi di indici come indice cluster e non cluster. La differenza tra indice cluster e non cluster è che esiste un solo indice cluster per tabella mentre esistono più indici non cluster per tabella. In breve, un indice non cluster è più lento e richiede più spazio di un indice cluster.

Riferimento:

1. Yadav, Durgaprasad. "Indice in Sql Server." LinkedIn SlideShare, 21 nov. 2015, disponibile qui.
2. Rahaman, Mahabubur. "Introduzione di Sql Server Indexing." LinkedIn SlideShare, 23 maggio 2015, disponibile qui.

Cortesia dell'immagine:

1. "Database logo" di Borjasotomayor presso English Wikibooks (CC BY-SA 3.0) via Commons Wikimedia