Indice cluster / non cluster sulla colonna identificatore univoco in SQL Server
-
03-07-2019 - |
Domanda
Ho letto qui le varie domande / risposte che indicano sostanzialmente che avere un indice cluster su una colonna uniqueidentifier è una scelta sbagliata per motivi di prestazioni. Indipendentemente da ciò, ho bisogno di usare un identificativo univoco come chiave primaria e NON voglio usare newsequentialid () perché i valori generati sono troppo simili tra loro (ho bisogno di più ID casuali in modo che gli utenti non possano [ragionevolmente] "indovinare" un altro ID).
Quindi, qual è il modo migliore per indicizzare questo PK? Anche se un indice cluster su questa colonna non è l'ideale, è meglio di un "unico, non cluster" index?
Sto usando SQL Server 2005.
Soluzione
Prima di tutto, se stai cercando di usare NEWID ()
per ottenere casualità (più che un semplice aspetto casuale), sei nei guai.
Di solito è meno della scelta ideale perché altri indici faranno riferimento alla chiave di indice cluster e una chiave di indice cluster lunga degraderà le prestazioni di tutti gli indici. È possibile creare una colonna intera IDENTITY
e creare l'indice cluster e creare un indice univoco non cluster nella colonna uniqueidentifier
.