Oba NEWID()
i NEWSEQUENTIALID()
podaj globalnie unikalne wartości typu uniqueidentifier
.
NEWID()
obejmuje losową aktywność, dlatego następna wartość jest nieprzewidywalna i wolniej się ją wykonuje.
NEWSEQUENTIALID()
nie obejmuje losowej aktywności, dlatego można przewidzieć następną wygenerowaną wartość
(niełatwo!) i wykonuje się szybciej niż NEWID()
.
Tak więc, jeśli nie martwisz się przewidywaną następną wartością (ze względów bezpieczeństwa), możesz użyć NEWSEQUENTIALID()
. Jeśli martwisz się przewidywalnością lub nie masz nic przeciwko niewielkim spadkom wydajności, możesz użyć NEWID()
.
Jednak w ścisłym tego słowa znaczeniu nadal istnieją znikome szanse, że identyfikatory GUID generowane przez różne komputery mają tę samą wartość. W praktyce uważa się to za niemożliwe.
Jeśli chcesz uzyskać więcej informacji, przeczytaj to:Która metoda generowania identyfikatorów GUID jest najlepsza, aby zapewnić, że identyfikator GUID jest naprawdę unikalny?
Uwaga NEWID()
jest zgodny z RFC 4122
. Druga funkcja wykorzystuje algorytm Microsoftu do generowania wartości.