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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top