I've being reading around reasons to use or not Guid and int.

int is smaller, faster, easy to remember, keeps a chronological sequence. And as for Guid, the only advantage I found is that it is unique. In which case a Guid would be better than and int and why?

From what I've seen, int has no flaws except by the number limit, which in many cases are irrelevant.

Why exactly was Guid created? I actually think it has a purpose other than serving as primary key of a simple table. (Any example of a real application using Guid for something?)

( Guid = UniqueIdentifier ) type on SQL Server

This has been asked in Stack Overflow here and here.
Jeff's post explains a lot about pros and cons of using GUID.

GUID Pros

Unique across every table, every database and every server
Allows easy merging of records from different databases
Allows easy distribution of databases across  multiple servers
You can generate IDs anywhere, instead of having to  roundtrip to the database, unless partial sequentiality is needed (i.e. with newsequentialid())
Most replication scenarios require GUID  columns anyway

GUID Cons

It is a whopping 4 times larger than the traditional 4-byte index
value; this can have serious
performance and storage implications
if you're not careful
Cumbersome to debug (where userid='{BAE7DF4-DDF-3RG-5TY3E3RF456AS10}')
The generated GUIDs should be partially sequential for best
performance (eg, newsequentialid() on
SQL Server 2005+) and to enable use of
clustered indexes


If you are certain about performance and you are not planning to replicate or merge records, then use int, and set it auto increment (identity seed in SQL Server).
