NEWSEQUENTIALID (Transact-SQL)
Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure
Cria um GUID que é maior que qualquer GUID anteriormente gerado por esta função em um computador especificado desde o início do Windows. Após o reinício do Windows, o GUID poderá ser iniciado novamente a partir de um intervalo inferior, mas ainda será globalmente exclusivo. Quando uma coluna de GUID é usada como um identificador de linha, usar NEWSEQUENTIALID pode ser mais rápido do que usar a função NEWID. Isso ocorre porque a função NEWID provoca atividade aleatória e usa menos páginas de dados do cache. O uso de NEWSEQUENTIALID também ajuda a preencher completamente as páginas de dados e índice.
Importante
Se a privacidade for uma preocupação, não use esta função. É possível adivinhar o valor do próximo GUID gerado e, assim, acessar os dados associados ao GUID.
NEWSEQUENTIALID é um wrapper na função UuidCreateSequential do Windows, com embaralhamento de bytes aplicado.
Aviso
A função UuidCreateSequential tem dependências de hardware. No SQL Server, clusters de valores sequenciais podem se desenvolver quando os bancos de dados (como bancos de dados independentes) são movidos para outros computadores. Ao usar o Always On e no Banco de Dados SQL, clusters de valores sequenciais podem se desenvolver se o banco de dados faz failover para outro computador.
Convenções de sintaxe de Transact-SQL
Sintaxe
NEWSEQUENTIALID ( )
Tipo de retorno
uniqueidentifier
Comentários
NEWSEQUENTIALID() apenas pode ser usado com restrições DEFAULT em colunas de tabela do tipo uniqueidentifier. Por exemplo:
CREATE TABLE myTable (ColumnA uniqueidentifier DEFAULT NEWSEQUENTIALID());
Quando NEWSEQUENTIALID() for usada em expressões DEFAULT, não pode ser combinada com outros operadores escalares. Por exemplo, não é possível executar a seguinte consulta:
CREATE TABLE myTable (ColumnA uniqueidentifier DEFAULT dbo.myfunction(NEWSEQUENTIALID()));
No exemplo anterior, myfunction()
é uma função escalar de escalar definida pelo usuário que aceita e retorna um valor uniqueidentifier
.
NEWSEQUENTIALID() não pode ser referenciada em consultas.
Você pode usar NEWSEQUENTIALID para gerar GUIDs e reduzir a contenção da página no nível folha de índices.
Cada GUID gerado usando NEWSEQUENTIALID é exclusivo nesse computador. Os GUIDs gerados com NEWSEQUENTIALID serão exclusivos entre vários computadores somente se o computador de origem tiver uma placa de rede.
Consulte Também
NEWID (Transact-SQL)
Operadores de comparação (Transact-SQL)