Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Est-il préférable d'utiliser un identifiant unique (GUID) ou un bigint pour une colonne d'identité ?

Cela dépend de ce que vous faites :

  • Si la vitesse est la principale préoccupation, alors un simple vieux int est probablement assez grand.
  • Si vous avez vraiment plus de 2 milliards (avec un B;) ) d'enregistrements, alors utilisez bigint ou un guide séquentiel.
  • Si vous avez besoin de pouvoir synchroniser facilement avec des enregistrements créés à distance, alors Guid est vraiment génial.

Mettre à jour
Quelques notes supplémentaires (moins évidentes) sur les Guids :

  • Ils peuvent être difficiles pour les index, et cela va au cœur des performances de la base de données
  • Vous pouvez utiliser des guides séquentiels pour récupérer une partie des performances d'indexation, mais abandonner une partie du caractère aléatoire utilisé au point 2.
  • Les GUID peuvent être difficiles à déboguer manuellement (where id='xxx-xxx-xxxxx' ), mais vous en récupérez également une partie via des guides séquentiels (where id='xxx-xxx' + '123' ).
  • Pour la même raison, les Guids peuvent rendre les attaques de sécurité basées sur l'ID plus difficiles, mais pas impossibles. (Vous ne pouvez pas simplement taper 'http://example.com?userid=xxxx' et s'attendre à obtenir un résultat pour le compte de quelqu'un d'autre).