Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

È meglio usare un identificatore univoco (GUID) o un bigint per una colonna di identità?

Dipende da cosa stai facendo:

  • Se la velocità è la preoccupazione principale, allora un semplice vecchio int è probabilmente abbastanza grande.
  • Se davvero avrai più di 2 miliardi di record (con una B;) ), usa bigint o una guida sequenziale.
  • Se devi essere in grado di sincronizzarti facilmente con i record creati in remoto, allora Guid è davvero fantastico.

Aggiorna
Alcune note aggiuntive (meno ovvie) su Guid:

  • Possono essere difficili per gli indici e questo va al centro delle prestazioni del database
  • Puoi utilizzare le guide sequenziali per recuperare parte delle prestazioni dell'indicizzazione, ma rinunciare a parte della casualità utilizzata nel punto due.
  • Può essere difficile eseguire manualmente il debug dei guide (where id='xxx-xxx-xxxxx' ), ma ne ottieni parte anche tramite guide sequenziali (where id='xxx-xxx' + '123' ).
  • Per lo stesso motivo, i Guid possono rendere gli attacchi alla sicurezza basati su ID più difficili, ma non impossibili. (Non puoi semplicemente digitare 'http://example.com?userid=xxxx' e aspettati di ottenere un risultato per l'account di qualcun altro).