sql >> Base de Datos >  >> RDS >> Sqlserver

SQL Server:¿NEWID () siempre da una identificación única?

Ambos NEWID() y NEWSEQUENTIALID() dar valores globales únicos de tipo uniqueidentifier .

NEWID() implica actividad aleatoria, por lo que el siguiente valor es impredecible y es más lento de ejecutar.

NEWSEQUENTIALID() no implica actividad aleatoria, por lo que se puede predecir el próximo valor generado (¡no fácilmente!) y se ejecuta más rápido que NEWID() .

Entonces, si no le preocupa que se prediga el próximo valor (por razones de seguridad), puede usar NEWSEQUENTIALID() . Si le preocupa la previsibilidad o no le importa la pequeña penalización de rendimiento, puede usar NEWID() .

Sin embargo, en sentido estricto, todavía hay posibilidades insignificantes de que los GUID generados por diferentes máquinas tengan el mismo valor. En la práctica, se considera imposible.

Si desea más información, lea esto:¿Qué método para generar GUID es mejor para garantizar que el GUID sea realmente único?

Nota NEWID() cumple RFC 4122 . Y la otra función usa un algoritmo de Microsoft para generar el valor.