使用自增的方式做主键的优点:

1、数据的存储空间小,节省空间。

2、insert和update操作时使用INT等类型性能会比GUID好,但是优势在15%以下。
   int自增序列 GUID性能测试 
   
   
3、可读性会好,对人类友好一点。

5、支持通过函数获取最新的值,如:Scope_Indentity() 。

使用自增的方式做主键的缺点

1、如果经常有合并表的操作,就可能会出现主键重复的情况。

2、数据范围有限制。如果存在大量的数据,可能会超出取值范围。

3、很难处理分布式存储的数据表。

使用GUID做主键的优点:

1、它是独一无二的。

2、出现重复的机会少(几乎不可能)。

3、适合大量数据中的插入和更新操作(能很好解决主键并发的问题)。

4、跨服务器数据合并非常方便。

5、能在业务层就知道目标ID,而不是数据提交给数据库系统后才确定 (有时很重要)

6、GUID是根据硬件设备相关ID以及时间戳生成的,还能大致知道生成的计算机硬件设备、时间等信息

使用GUID做主键的缺点:

1、存储空间大(16 byte),因此它将会占用更多的磁盘大小。

GUID过长,看表现形式,至少都有32位,长的38位,浪费存储空间。
GUID字符串可能是32字符、36字符(带4个“-”分割)、38字符(在36字符的基础上用“{}”标记)

2、看起来会很混乱,对人类不友好。

3、没有内置的函数获取最新产生的guid主键。

总结:
上面列出了GUID和INT两种数据类型做主键优缺点,对于大数据量,建议使用guid做主键。而使用int会得到最佳的性能。
不过,Oracle数据库的圈子里已经习惯用UUID了。保证生成的ID不仅是表独立的,而且是库独立的,这点在你想切分数据库的时候尤为重要。
Mysql也原生支持UUID select uuid();

如果考虑到数据迁移、各数据库兼容性等用GUID会比较合适