Ambos
NEWID()
e NEWSEQUENTIALID()
forneça valores globalmente exclusivos do tipo uniqueidentifier
. NEWID()
envolve atividade aleatória, portanto, o próximo valor é imprevisível e sua execução é mais lenta. NEWSEQUENTIALID()
não envolve atividade aleatória, portanto, o próximo valor gerado pode ser previsto
(não é fácil!) e executa mais rápido que NEWID()
. Portanto, se você não estiver preocupado com a previsão do próximo valor (por motivos de segurança), poderá usar
NEWSEQUENTIALID()
. Se você está preocupado com a previsibilidade ou não se importa com a pequena penalidade de desempenho, você pode usar NEWID()
. No entanto, em sentido estrito, ainda há chances insignificantes de que GUIDs gerados por máquinas diferentes tenham o mesmo valor. Na prática, é considerado impossível.
Se você quiser mais informações, leia isto:Qual método para gerar GUIDs é melhor para garantir que o GUID seja realmente único?
Observe
NEWID()
está em conformidade com RFC 4122
. E a outra função usa um algoritmo da Microsoft para gerar o valor.