Indice cluster e non cluster: differenze principali con l'esempio

Sommario:

Anonim

Cos'è un indice?

Un indice è una chiave creata da una o più colonne nel database che accelera il recupero delle righe dalla tabella o dalla vista. Questa chiave aiuta un database come Oracle, SQL Server, MySQL, ecc. A trovare rapidamente la riga associata ai valori della chiave.

Due tipi di indici sono:

  • Indice raggruppato
  • Indice non cluster

In questo tutorial imparerai:

  • Cos'è un indice?
  • Cos'è un indice cluster?
  • Che cos'è l'indice non cluster?
  • Caratteristica dell'indice cluster
  • Caratteristiche degli indici non cluster
  • Un esempio di indice cluster
  • Un esempio di un indice non cluster
  • Differenze tra indice cluster e indice non cluster
  • Vantaggi dell'indice cluster
  • Vantaggi dell'indice non cluster
  • Svantaggi dell'indice cluster
  • Svantaggi dell'indice non cluster

Cos'è un indice cluster?

L'indice cluster è un tipo di indice che ordina le righe di dati nella tabella in base ai valori chiave. Nel database è presente un solo indice cluster per tabella.

Un indice cluster definisce l'ordine in cui i dati vengono archiviati nella tabella che può essere ordinata in un solo modo. Quindi, può esserci un solo indice cluster per ogni tabella. In un RDBMS, di solito, la chiave primaria consente di creare un indice cluster basato su quella specifica colonna.

Che cos'è l'indice non cluster?

Un indice non cluster memorizza i dati in una posizione e gli indici in un'altra posizione. L'indice contiene puntatori alla posizione di quei dati. Una singola tabella può avere molti indici non cluster poiché un indice nell'indice non cluster è archiviato in posizioni diverse.

Ad esempio, un libro può avere più di un indice, uno all'inizio che mostra il contenuto di un libro in termini di unità mentre il secondo indice mostra l'indice dei termini in ordine alfabetico.

Un indice non cluster è definito nel campo non ordinamento della tabella. Questo tipo di metodo di indicizzazione consente di migliorare le prestazioni delle query che utilizzano chiavi non assegnate come chiave primaria. Un indice non cluster consente di aggiungere una chiave univoca per una tabella.

DIFFERENZA CHIAVE

  • L'indice cluster è un tipo di indice che ordina le righe di dati nella tabella in base ai valori chiave, mentre l'indice non cluster archivia i dati in una posizione e gli indici in un'altra posizione.
  • L'indice cluster memorizza le pagine di dati nei nodi foglia dell'indice mentre il metodo dell'indice non cluster non archivia mai le pagine di dati nei nodi foglia dell'indice.
  • L'indice del cluster non richiede spazio su disco aggiuntivo, mentre l'indice non cluster richiede spazio su disco aggiuntivo.
  • L'indice del cluster offre un accesso più rapido ai dati, d'altra parte, l'indice non cluster è più lento.

Caratteristica dell'indice cluster

  • Archiviazione dati predefinita e ordinata
  • Usa solo una o più colonne per un indice
  • Ti aiuta a memorizzare dati e indicizzare insieme
  • Frammentazione
  • Operazioni
  • Scansione indice cluster e ricerca indice
  • Ricerca chiave

Caratteristiche degli indici non cluster

  • Memorizza solo i valori chiave
  • Puntatori a righe di indice heap / cluster
  • Consente l'accesso ai dati secondari
  • Ponte ai dati
  • Operazioni di Index Scan e Index Seek
  • È possibile creare un indice non cluster per una tabella o una vista
  • Ogni riga dell'indice nell'indice non cluster memorizza il valore della chiave non cluster e un localizzatore di riga

Un esempio di indice cluster

Nell'esempio seguente, SalesOrderDetailID è l'indice cluster. Query di esempio per recuperare i dati

SELECT CarrierTrackingNumber, UnitPriceFROM SalesDataWHERE SalesOrderDetailID = 6

Un esempio di un indice non cluster

Nell'esempio seguente, viene creato un indice non cluster su OrderQty e ProductID come segue

CREATE INDEX myIndex ONSalesData (ProductID, OrderQty)

La seguente query verrà recuperata più velocemente rispetto all'indice cluster.

SELECT Product ID, OrderQtyFROM SalesDataWHERE ProductID = 714

Differenze tra indice cluster e indice non cluster

Parametri Raggruppato Non in cluster
Utilizzare per È possibile ordinare i record e archiviare fisicamente l'indice cluster in memoria secondo l'ordine. Un indice non cluster consente di creare un ordine logico per le righe di dati e utilizza i puntatori per i file di dati fisici.
Metodo di memorizzazione Consente di archiviare le pagine di dati nei nodi foglia dell'indice. Questo metodo di indicizzazione non archivia mai le pagine di dati nei nodi foglia dell'indice.
Taglia La dimensione dell'indice cluster è piuttosto grande. La dimensione dell'indice non cluster è piccola rispetto all'indice cluster.
Accesso ai dati Più veloce Più lento rispetto all'indice cluster
Spazio su disco aggiuntivo Non richiesto Necessario per memorizzare l'indice separatamente
Tipo di chiave Per impostazione predefinita, le chiavi primarie della tabella sono un indice cluster. Può essere utilizzato con vincolo univoco sulla tabella che funge da chiave composta.
Caratteristica principale Un indice cluster può migliorare le prestazioni del recupero dei dati. Dovrebbe essere creato sulle colonne utilizzate nei join.

Vantaggi dell'indice cluster

I pro / vantaggi dell'indice cluster sono:

  • Gli indici raggruppati sono un'opzione ideale per l'intervallo o il raggruppamento con query di tipo max, min e conteggio
  • In questo tipo di indice, una ricerca può andare direttamente a un punto specifico dei dati in modo da poter continuare a leggere in sequenza da lì.
  • Il metodo dell'indice cluster utilizza il meccanismo di posizione per individuare la voce di indice all'inizio di un intervallo.
  • È un metodo efficace per le ricerche per intervallo quando viene richiesto un intervallo di valori chiave di ricerca.
  • Ti aiuta a ridurre al minimo i trasferimenti di pagina e massimizzare i colpi di cache.

Vantaggi dell'indice non cluster

I vantaggi dell'utilizzo di un indice non cluster sono:

  • Un indice non cluster consente di recuperare rapidamente i dati dalla tabella del database.
  • Ti aiuta a evitare i costi generali associati all'indice cluster
  • Una tabella può avere più indici non cluster in RDBMS. Quindi, può essere utilizzato per creare più di un indice.

Svantaggi dell'indice cluster

Ecco i contro / svantaggi dell'utilizzo dell'indice cluster:

  • Molti inserti in ordine non sequenziale
  • Un indice cluster crea molte divisioni di pagina costanti, che includono la pagina di dati e le pagine di indice.
  • Lavoro extra per SQL per inserimenti, aggiornamenti ed eliminazioni.
  • Un indice cluster richiede più tempo per aggiornare i record quando i campi nell'indice cluster vengono modificati.
  • I nodi foglia contengono principalmente pagine di dati nell'indice cluster.

Svantaggi dell'indice non cluster

Di seguito sono riportati i contro / svantaggi dell'utilizzo di un indice non cluster:

  • Un indice non cluster consente di archiviare i dati in un ordine logico ma non consente di ordinare fisicamente le righe di dati.
  • Il processo di ricerca su un indice non cluster diventa costoso.
  • Ogni volta che la chiave di clustering viene aggiornata, è necessario un aggiornamento corrispondente sull'indice non cluster poiché memorizza la chiave di clustering.