That depends on what you’re doing:
- If speed is the primary concern then a plain old
intis probably big enough. - If you really will have more than 2 billion (with a B 😉 ) records, then use
bigintor a sequential guid. - If you need to be able to easily synchronize with records created remotely, then
Guidis really great.
Update
Some additional (less-obvious) notes on Guids:
- They can be hard on indexes, and that cuts to the core of database performance
- You can use sequential guids to get back some of the indexing performance, but give up some of the randomness used in point two.
- Guids can be hard to debug by hand (
where id='xxx-xxx-xxxxx'), but you get some of that back via sequential guids as well (where id='xxx-xxx' + '123'). - For the same reason, Guids can make ID-based security attacks more difficult- but not impossible. (You can’t just type
'http://example.com?userid=xxxx'and expect to get a result for someone else’s account).