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

SQL Server :giver NEWID() altid et unikt ID?

Både NEWID() og NEWSEQUENTIALID() giv globalt unikke værdier af typen >uniqueidentifier .

NEWID() involverer tilfældig aktivitet, så den næste værdi er uforudsigelig, og den er langsommere at udføre.

NEWSEQUENTIALID() involverer ikke tilfældig aktivitet, så kan den næste genererede værdi forudsiges (ikke let!) og udføres hurtigere end NEWID() .

Så hvis du ikke er bekymret for den næste værdi, der forudsiges (af sikkerhedsmæssige årsager), kan du bruge NEWSEQUENTIALID() . Hvis du er bekymret for forudsigelighed, eller du ikke har noget imod den lille præstationsstraf, kan du bruge NEWID() .

Men i streng forstand er der stadig ubetydelige chancer for, at GUID'er genereret af forskellige maskiner har samme værdi. I praksis anses det for at være umuligt.

Hvis du vil have yderligere info, så læs dette:Hvilken metode til at generere GUID'er er bedst til at sikre, at GUID'en virkelig er unik?

Bemærk NEWID() overholder RFC 4122 . Og den anden funktion bruger en Microsofts algoritme til at generere værdien.



  1. hvordan man tilføjer dato og tid med backupfilnavn ved hjælp af mysqldump fra kommandoprompt og definerer stien til backupfil

  2. Få fuld MySQL-forespørgselsstreng ved indsættelse eller opdatering

  3. Hvordan kan jeg få antallet af rækker 'returneret' fra et resultatsæt af en lagret procedure

  4. Formater et telefonnummer i SQL Server (T-SQL)