Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Relazione tra chiave primaria e indice cluster

Una chiave primaria è una logica concept - è l'identificatore univoco per una riga in una tabella. In quanto tale, ha un sacco di attributi:potrebbe non essere nullo e deve essere unico. Ovviamente, poiché è probabile che cerchi molto i record in base al loro identificatore univoco, sarebbe utile avere un indice sulla chiave primaria.

Un indice cluster è un fisico concetto:è un indice che influisce sull'ordine in cui i record vengono archiviati sul disco. Ciò lo rende un indice molto veloce durante l'accesso ai dati, sebbene possa rallentare le scritture se la chiave primaria non è un numero sequenziale.

Sì, puoi avere una chiave primaria senza un indice cluster e, a volte, potresti volerlo (ad esempio quando la tua chiave primaria è una combinazione di chiavi esterne su una tabella di unione e non vuoi incorrere nell'overhead di rimescolamento del disco durante la scrittura).

Sì, puoi creare un indice cluster su colonne che non sono una chiave primaria.