Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

É melhor usar um identificador exclusivo (GUID) ou um bigint para uma coluna de identidade?


Isso depende do que você está fazendo:
  • Se a velocidade for a principal preocupação, então um simples int provavelmente é grande o suficiente.
  • Se você realmente tiver mais de 2 bilhões (com um B;) ) de registros, use bigint ou um guia sequencial.
  • Se você precisar sincronizar facilmente com registros criados remotamente, então Guid é realmente ótimo.

Atualizar
Algumas notas adicionais (menos óbvias) sobre os Guids:
  • Eles podem ser difíceis para os índices, e isso prejudica o desempenho do banco de dados
  • Você pode usar guias sequenciais para recuperar um pouco do desempenho da indexação, mas abandone um pouco da aleatoriedade usada no ponto dois.
  • Os guias podem ser difíceis de depurar manualmente (where id='xxx-xxx-xxxxx' ), mas você também obtém parte disso por meio de guias sequenciais (where id='xxx-xxx' + '123' ).
  • Pelo mesmo motivo, os Guids podem tornar os ataques de segurança baseados em ID mais difíceis, mas não impossíveis. (Você não pode simplesmente digitar 'http://example.com?userid=xxxx' e esperar obter um resultado para a conta de outra pessoa).