2013-07-26 19 views
8

I GUID sono ordinati in modo tempestivo? Voglio dire se usi ORDER BY con un tipo di variabile GUID, i record creati ultimamente arrivano in ritardo?I GUID sono ordinati in modo tempestivo? Se ORDER BY utilizzato con un tipo di variabile GUID, i record creati ultimamente arrivano in ritardo?

+1

Ho sempre pensato non, ma ho realizzato che non sono reale lo so. Interessante domanda (+1). – Mansfield

+3

GUID, di per sé, sono solo 128 bit di dati con una piccola quantità di struttura. Ci sono diversi modi per * generare * guids, quindi se vuoi fare questa domanda, devi dire come stai * generando * i guids. –

+1

Nota a margine, se si crea una tabella in SQL Server con una chiave cluster di tipo GUID, l'ordine fisico delle righe è uguale a quello del GUID, vale a dire senza un ordine particolare, il che significa che ogni nuova riga inserita porta spesso a divisioni di pagina ciò è dannoso per le prestazioni. La linea di fondo: non usare i GUID come chiavi di gruppo se puoi evitarlo. –

risposta

10

Un semplice LINQPad mockup risponde alla tua domanda:

var dictionary = new Dictionary<int, Guid>(); 

for (int i = 0; i < 5; i++) 
    dictionary.Add(i, Guid.NewGuid()); 

dictionary.OrderBy(d => d.Value); 

risultati in:

Key Value 
2 3624183d-581a-45bc-9d3d-cafeddaf8585 
0 4b4685c9-f163-4694-ae8c-4b83402a293c 
4 7a14d8e4-d870-4f33-bfb3-f4337b756e18 
1 b93131c7-c0d7-42b4-82b5-e3cc456214a9 
3 cfdc0bc8-7f5a-4601-a927-a759bb9e33c6 
1

Si prega di vedere this

un identificatore univoco globale (GUID,/ɡwɪd/o/ɡuːɪd /) è un numero di riferimento unico usato come un identificatore in software per computer. Il termine GUID si riferisce in genere a varie implementazioni dello standard universale U2ID ( ). I GUID 1 vengono in genere memorizzati come valori a 128 bit e vengono comunemente visualizzati come 32 cifre esadecimali con gruppi separati da trattini, ad esempio {21EC2020-3AEA-1069-A2DD-08002B30309D}. I GUID generati da numeri casuali contengono 6 bit fissi che indicano che sono casuali e 122 bit casuali; il numero totale di tali GUID univoci è 2122 o 5.3 × 1036. Questo numero è così grande che la probabilità che lo stesso numero sia generato in modo casuale due volte è trascurabile; tuttavia, altre versioni GUID presentano proprietà e probabilità di univocità diverse, che vanno da univocità garantita alla probabile non univocità.