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

Una colonna di chiave primaria Sequential Guid dovrebbe essere un indice cluster?

Innanzitutto per chiarire, una chiave primaria e un indice cluster sono 2 cose separate e distinte, ovvero una non è accoppiata all'altra (i PK possono essere non cluster, gli indici cluster possono essere non PK).

Detto questo, penso che tu stia chiedendo di più "Dovrebbe essere utilizzato un GUID sequenziale come indice cluster". Questa è una domanda carica, ma Kimberly Tripp ne ha discusso probabilmente il migliore di chiunque abbia mai visto. Nota che l'articolo fa riferimento a una PK, ma all'interno dell'articolo fa riferimento a come la considerazione si applica principalmente a una scelta di indice cluster rispetto a una PK.

Supponendo che tu abbia già deciso di utilizzare un GUID come chiave del cluster (che può essere o meno il caso), l'uso di un GUID sequenziale sarebbe molto probabilmente una scelta superiore a un GUID non sequenziale, tuttavia c'è almeno 1 scenario in cui potrebbe essere preferito un GUID non sequenziale (sebbene uno scenario molto raro e molto avanzato in cui dovresti sostanzialmente comprendere il tuo sistema e il server SQL così bene che non hai dubbi sul fatto che dovrebbe essere usato - avrebbe a che fare con hotspot sul dispositivo di archiviazione e diffondendo grandi volumi di scritture in diverse posizioni del cluster).