sql >> Databáze >  >> RDS >> Sqlserver

SQL Server:poskytuje NEWID() vždy jedinečné ID?

Oba NEWID() a NEWSEQUENTIALID() zadejte globálně jedinečné hodnoty typu uniqueidentifier .

NEWID() zahrnuje náhodnou aktivitu, takže další hodnota je nepředvídatelná a její provedení je pomalejší.

NEWSEQUENTIALID() nezahrnuje náhodnou aktivitu, takže dá se předvídat další vygenerovaná hodnota (nesnadno!) a spouští se rychleji než NEWID() .

Pokud se tedy nebojíte předpovídat další hodnotu (z bezpečnostních důvodů), můžete použít NEWSEQUENTIALID() . Pokud máte obavy z předvídatelnosti nebo vám nevadí malá penalizace výkonu, můžete použít NEWID() .

V přísném slova smyslu však stále existuje zanedbatelná šance, že GUID generované různými stroji mají stejnou hodnotu. V praxi je to považováno za nemožné.

Pokud chcete další informace, přečtěte si toto:Která metoda generování identifikátorů GUID je nejlepší pro zajištění skutečně jedinečného identifikátoru GUID?

Poznámka NEWID() vyhovuje RFC 4122 . A druhá funkce používá pro generování hodnoty algoritmus společnosti Microsoft.



  1. Stránkování v SQL Server pomocí OFFSET/FETCH

  2. MySQL JOIN s podmínkami IF

  3. Django manage.py házení syncdb Žádný modul s názvem MySQLdb

  4. Optimalizujte výkon MySQL/MariaDB pomocí nástroje MySQLTunner