Recently one of my friend ask me when I should go for GUID and When I should go for Int as primary key in table. So decided to write a blog post for it. Here are advantages and disadvantage of the GUID and INT.
INT Data Type:
- Its required small space in terms of the storage it will only allocates 4 bytes to store data.
- Insert and update performance will be faster then the GUID. It will increase the performance of the application.
- Easy to index and Join will give best performance with the integer.
- Easy to understand and remember
- Support of function that will give last value generated like Scope_Indentity()
- If you are going to merge table frequently then there may be a chance to duplicated primary key.
- Limited range of uniqueness if you are going to store lots of data then it may be chance to run out of storage for INT data type.
- Hard to work with distributed tables.
GUID Data Type:
- It is unique for the current domains. For primary key is uniquely identifies the table.
- Less chances of for duplication.
- Suitable for inserting and updating large amount of data.
- Easy for merging data across servers.
- Bigger storage size (16bytes) will occupy more disk size then integer.
- Hard to remember and lower performance with Join then integer.
- Don’t have function to get last uniquely generated primary key.
- A GUID primary Key will added to all the other indexes on tables. So it will decrease the performance.
From above the advantages and disadvantages we can conclude that if you are having very large amount of data in table then go for the GUID as primary key in database. Otherwise INT will give best performance. Hope this will help you. Please post your opinion as comment.