sql >> Database >  >> RDS >> Sqlserver

SQL Server :geeft NEWID() altijd een unieke ID?

Beide NEWID() en NEWSEQUENTIALID() geef wereldwijd unieke waarden van het type uniqueidentifier .

NEWID() houdt willekeurige activiteit in, dus de volgende waarde is onvoorspelbaar en langzamer om uit te voeren.

NEWSEQUENTIALID() houdt geen willekeurige activiteit in, dus de volgende gegenereerde waarde kan worden voorspeld (niet gemakkelijk!) en wordt sneller uitgevoerd dan NEWID() .

Dus als u zich geen zorgen maakt dat de volgende waarde wordt voorspeld (om veiligheidsredenen), kunt u NEWSEQUENTIALID() gebruiken . Als je je zorgen maakt over voorspelbaarheid of als je de kleine prestatievermindering niet erg vindt, kun je NEWID() gebruiken .

Strikt genomen zijn er echter nog steeds verwaarloosbare kansen dat GUID's die door verschillende machines worden gegenereerd, dezelfde waarde hebben. In de praktijk wordt het als onmogelijk beschouwd.

Als je meer informatie wilt, lees dan dit:Welke methode voor het genereren van GUID's is het beste om ervoor te zorgen dat de GUID echt uniek is?

Opmerking NEWID() voldoet aan RFC 4122 . En de andere functie gebruikt een algoritme van Microsoft voor het genereren van de waarde.



  1. Oracle Datetime-functies (volledige lijst)

  2. MySQL:BEPERKEN met een percentage van het aantal records?

  3. MySql WorkBench AES 256-decodering

  4. Hoe kan ik een maximum aantal rijen in de MySQL-tabel instellen?