Differenza tra ricerca indice cluster e ricerca indice non cluster


10

Qual è la differenza tra la ricerca dell'indice cluster (CI) e la ricerca dell'indice non cluster (NCI)? Uno si comporta meglio dell'altro?

Il motivo per cui lo sto chiedendo è perché ho una tabella con 50 milioni di righe e 150 colonne. Ha una colonna denominata IDdefinita come indice cluster. C'è un altro NCI su di esso con lo stesso ID chiave indice e sette includecolonne -d. Mi sembra che l'indice NC sia un duplicato qui e possa essere tranquillamente abbandonato.

Quindi voglio alcune opinioni / consigli di esperti se possono essere lasciati cadere in modo sicuro o devono mantenerli intatti?


Stai dicendo che TUTTE le colonne sono incluse nell'indice cluster nessuno?
Ian Ringrose,

No. La tabella contiene 150 colonne con la colonna ID definita come elemento della configurazione e ha un indice NCI con una colonna ID come chiave di indice e altre 7 colonne incluse.
SQLPRODDBA

Quindi sembra che Paul White abbia dato la risposta corretta, tuttavia mi chiedo se è necessario modificare la tabella "base" da una tabella in cluster a un heap. O addirittura suddividere la tabella in base alla frequenza con cui vengono aggiornate le diverse colonne, in modo da ridurre il costo della registrazione delle transazioni.
Ian Ringrose,

Risposte:


26

Un indice non cluster con le stesse chiavi * dell'indice cluster può essere comunque utile, poiché l'indice non cluster sarà generalmente più piccolo e più denso. Ricorda, un indice cluster include tutti i dati in riga, quindi è normalmente l'indice più largo (meno denso) possibile.

* Le stesse colonne chiave, nella stessa sequenza, sono ordinate allo stesso modo (asc / desc).

Per una ricerca singleton (una ricerca che utilizza un predicato di uguaglianza in un indice univoco), la differenza principale è la presunta maggiore possibilità che le pagine dell'indice siano necessarie per trovare quel singolo record già presente nella memoria. A parità di condizioni, un indice non cluster con 100 pagine ha maggiori possibilità di un indice cluster archiviato su 10.000 pagine.

Per qualsiasi altro tipo di ricerca tranne un singleton, ci sarà anche un componente di scansione. La porzione di scansione beneficerà inoltre della maggiore densità dell'indice non cluster (più righe per pagina). Anche se le pagine devono provenire da una memoria permanente, leggere meno pagine è più veloce.

È necessario controllare la documentazione del sistema, chiedere alla persona che ha aggiunto l'indice e / o cercare commenti sul codice per capire perché esiste questo indice. È inoltre necessario controllare attentamente le definizioni complete dell'indice , compresa la compressione, e consultare gli script di manutenzione dell'indice. Potrebbero esserci altri motivi speciali per avere l'indice non cluster (ad esempio la possibilità di ricostruire online).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.