chiave primaria cluster colonna identificativo ID univoco in SQL Server
-
23-08-2019 - |
Domanda
Se la colonna ID su un tavolo è un identificatore univoco (GUID), c'è qualche punto di creare un cluster chiave primaria nella colonna ID?
Dato che essi sono unici a livello globale, come sarebbe il lavoro di smistamento?
Soluzione
GUID come sono sono terribili per le prestazioni dal momento che sono i valori in modo efficace casuali (questo "rompe" indice cluster), e sono terribili per gli indici, in quanto meno le voci si inseriscono in una singola pagina / entità (termini di SQL Server). SQL Server 2005 introduce newsequentialid()
che aiuta a risolvere primo problema .
Altri suggerimenti
I vivamente di non utilizzare chiave cluster Guid ... Abbiamo avuto problemi di prestazioni grandi su un server SQL a causa di tale cattiva progettazione a pochi anni fa.
:Verificate anche: Migliorare le prestazioni della chiave primaria dell'indice gruppo GUID
Mettere un indice cluster su una colonna GUID non è una buona idea (a meno che non si sta facendo uso di GUID sequenziali).
L'indice cluster determina l'ordine fisico di come i record sono memorizzati.
Questo significa che, se si mette un indice cluster su una colonna che non sequenziale crescere, SQL Server avrà un certo lavoro facendo in modo che i record siano correttamente ordinato fisicamente quando si inseriscono nuovi record.
L'idea di avere un indice ordinato è molto buona in se stessa come la ricerca, allora diventa molto efficiente.
Il problema però è che in caso di uno GUID non cerca con "dove GUID = xyz". Così l'intero concetto è sprecato. Quindi, vorrei suggerire di avere invece un indice cluster su una colonna che viene usato più spesso come SARG per aumentare l'efficienza delle query.