Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

SQL Server:NEWID() винаги ли дава уникален идентификатор?

И двете NEWID() и NEWSEQUENTIALID() дайте глобално уникални стойности от тип uniqueidentifier .

NEWID() включва произволна активност, така че следващата стойност е непредвидима и се изпълнява по-бавно.

NEWSEQUENTIALID() не включва произволна активност, така че може да се предвиди следващата генерирана стойност (не е лесно!) и се изпълнява по-бързо от NEWID() .

Така че, ако не се притеснявате от прогнозирането на следващата стойност (от съображения за сигурност), можете да използвате NEWSEQUENTIALID() . Ако сте загрижени за предсказуемостта или нямате нищо против малкото наказание за производителност, можете да използвате NEWID() .

Въпреки това, в строг смисъл, все още има незначителни шансове GUID, генерирани от различни машини, да имат една и съща стойност. На практика се счита за невъзможно.

Ако искате повече информация, прочетете това:Кой метод за генериране на GUID е най-добрият, за да се гарантира, че GUID е наистина уникален?

Забележка NEWID() отговаря на RFC 4122 . А другата функция използва алгоритъма на Microsoft за генериране на стойността.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Пребройте броя на записите, върнати от група от

  2. ATAN() Примери в SQL Server

  3. Създайте съхранена процедура в SQL Server 2017

  4. SQL Server 2005 Как да създадете уникално ограничение?

  5. Прегледайте настройките на вашата сесия с SESSIONPROPERTY() в SQL Server