That depends on what you're doing:
- If speed is the primary concern then a plain old
int
is probably big enough.
- If you really will have more than 2 billion (with a B ;) ) records, then use
bigint
or a sequential guid.
- If you need to be able to easily synchronize with records created remotely, then
Guid
is 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).
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…