sql >> Databasteknik >  >> RDS >> Sqlserver

SQL Server :ger NEWID() alltid ett unikt ID?

Båda NEWID() och NEWSEQUENTIALID() ge globalt unika värden av typen uniqueidentifier .

NEWID() involverar slumpmässig aktivitet, så nästa värde är oförutsägbart och det är långsammare att utföra.

NEWSEQUENTIALID() involverar inte slumpmässig aktivitet, så kan nästa genererade värde förutsägas (inte lätt!) och körs snabbare än NEWID() .

Så om du inte är orolig för nästa värde som förutsägs (av säkerhetsskäl) kan du använda NEWSEQUENTIALID() . Om du är orolig över förutsägbarheten eller om du inte har något emot den lilla prestationsstraffet kan du använda NEWID() .

Men i strikt mening finns det fortfarande försumbara chanser att GUID genererade av olika maskiner har samma värde. I praktiken anses det vara omöjligt.

Om du vill ha mer information, läs detta:Vilken metod för att generera GUID är bäst för att säkerställa att GUID verkligen är unik?

Notera NEWID() uppfyller RFC 4122 . Och den andra funktionen använder en Microsofts algoritm för att generera värdet.



  1. MySQL SELECT n poster baserat på GROUP BY

  2. Kan en sql-servertabell ha två identitetskolumner?

  3. ADDDATE() Exempel – MySQL

  4. MySQL RAND() Funktion – Generera ett slumptal i MySQL