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.