For SQL server is it better to use an uniqueidentifier(GUID) or a bigint for an identity column?
If you develop distributed system for documents management and different parts of system in different places all over the world can create some documents. In such case I would use GUID, because it guaranties that 2 documents created in different parts of distributed system wouldn't have same Id.
GUIDs may seem to be a natural choice for your primary key - and if you really must, you could probably argue to use it for the PRIMARY KEY of the table. What I'd strongly recommend not to do is use the GUID column as the clustering key, which SQL Server does by default, unless you specifically tell it not to.
Use guids when you have multiple independent systems or clients generating ID's that need to be unique. For example, if I have 5 client apps creating and inserting transactional data into a table that has a unique constraint on the ID, then use guids.
The uniqueidentifier type is considered a character type for the purposes of conversion from a character expression, and therefore is subject to the truncation rules for converting to a character type.
That depends on what you're doing:
int
is probably big enough.bigint
or a sequential guid.Guid
is really great.Update
Some additional (less-obvious) notes on Guids:
where id='xxx-xxx-xxxxx'
), but you get some of that back via sequential guids as well (where id='xxx-xxx' + '123'
). 'http://example.com?userid=xxxx'
and expect to get a result for someone else's account).If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With