sql >> Base de Datos >  >> RDS >> Sqlserver

¿Es mejor usar un identificador único (GUID) o un bigint para una columna de identidad?

Eso depende de lo que estés haciendo:

  • Si la velocidad es la principal preocupación, entonces un simple int probablemente sea lo suficientemente grande.
  • Si realmente va a tener más de 2 mil millones (con B;) ) registros, entonces use bigint o un GUID secuencial.
  • Si necesita poder sincronizar fácilmente con registros creados de forma remota, entonces Guid es realmente genial.

Actualizar
Algunas notas adicionales (menos obvias) sobre Guids:

  • Pueden ser duros con los índices, y eso reduce el rendimiento de la base de datos
  • Puede usar guías secuenciales para recuperar parte del rendimiento de la indexación, pero renuncie a parte de la aleatoriedad utilizada en el punto dos.
  • Los GUID pueden ser difíciles de depurar a mano (where id='xxx-xxx-xxxxx' ), pero también obtiene algo de eso a través de guids secuenciales (where id='xxx-xxx' + '123' ).
  • Por la misma razón, los Guids pueden hacer que los ataques de seguridad basados ​​en ID sean más difíciles, pero no imposibles. (No puede simplemente escribir 'http://example.com?userid=xxxx' y espera obtener un resultado para la cuenta de otra persona).