risposta

5

L'indice cluster di una tabella è normalmente definito sulle colonne chiave primaria.

Questo, tuttavia, non è un requisito rigoroso.

Da MSDN:

Quando si crea un vincolo PRIMARY KEY, un indice cluster univoco sulla colonna o le colonne viene creato automaticamente se un indice cluster nella tabella non esiste già e non si specifica un indice non cluster unico.

E:

è possibile creare un indice cluster su una colonna diversa colonna di chiave primaria, se è stato specificato un vincolo di chiave primaria non cluster.

4

Una chiave primaria è, come suggerisce il nome, il primario identificatore univoco per una riga nella tabella. Un indice cluster ordina fisicamente i dati secondo l'indice. Sebbene SQL Server esegua il clustering di una chiave primaria per impostazione predefinita, non esiste una relazione diretta tra i due.

9

In che modo la parola chiave PRIMARY KEY è correlata agli indici cluster in MS SqlServer?

Per impostazione predefinita, uno PRIMARY KEY è implementato come indice cluster. Tuttavia, è possibile eseguire il backup anche mediante un indice non cluster (specificando le opzioni NONCLUSTERED alla relativa dichiarazione)

Un indice cluster non è necessariamente un PRIMARY KEY. Può anche non essere univoco (in questo caso, una colonna nascosta denominata uniqueifier viene aggiunta a ciascuna chiave).

Si noti che un indice cluster non è realmente un indice (ad esempio una proiezione di una tabella ordinata in modo diverso, con i riferimenti ai record originali). Lo è il tavolo stesso, con i record originali ordinati.

Quando si crea un indice cluster, non si "crea" realmente nulla che è possibile separare dal tavolo. Basta riorganizzare il tavolo stesso e cambiare il modo in cui i record vengono archiviati.

+1

Wow, uniquifier. Ho imparato qualcosa di nuovo oggi. –

+1

Quando si crea un indice cluster, si crea una pagina indice radice e pagine intermedie. Ancora +1. –

Problemi correlati