GUID和INT两种数据类型做主键的比较
2010-12-02 15:45
387 查看
我们公司的数据库全部是使用GUID做主键的,很多人习惯使用int做主键。所以呢,这里总结一下,将两种数据类型做主键进行一个比较。
使用INT做主键的优点:
1、需要很小的数据存储空间,仅仅需要4 byte 。
2、insert和update操作时使用INT的性能比GUID好,所以使用int将会提高应用程序的性能。
3、index和Join 操作,int的性能最好。
4、容易记忆。
5、支持通过函数获取最新的值,如:Scope_Indentity() 。
使用INT做主键的缺点
1、如果经常有合并表的操作,就可能会出现主键重复的情况。
2、使用INT数据范围有限制。如果存在大量的数据,可能会超出INT的取值范围。
3、很难处理分布式存储的数据表。
使用GUID做主键的优点:
1、它是独一无二的。
2、出现重复的机会少。
3、适合大量数据中的插入和更新操作。
4、跨服务器数据合并非常方便。
使用GUID做主键的缺点:
1、存储空间大(16 byte),因此它将会占用更多的磁盘大小。
2、很难记忆。join操作性能比int要低。
3、没有内置的函数获取最新产生的guid主键。
4、GUID做主键将会添加到表上的所以其他索引中,因此会降低性能。
总结:
上面列出了GUID和INT两种数据类型做主键优缺点。我觉得,对于大数据量,建议使用guid做主键。而使用int会得到最佳的性能。
使用INT做主键的优点:
1、需要很小的数据存储空间,仅仅需要4 byte 。
2、insert和update操作时使用INT的性能比GUID好,所以使用int将会提高应用程序的性能。
3、index和Join 操作,int的性能最好。
4、容易记忆。
5、支持通过函数获取最新的值,如:Scope_Indentity() 。
使用INT做主键的缺点
1、如果经常有合并表的操作,就可能会出现主键重复的情况。
2、使用INT数据范围有限制。如果存在大量的数据,可能会超出INT的取值范围。
3、很难处理分布式存储的数据表。
使用GUID做主键的优点:
1、它是独一无二的。
2、出现重复的机会少。
3、适合大量数据中的插入和更新操作。
4、跨服务器数据合并非常方便。
使用GUID做主键的缺点:
1、存储空间大(16 byte),因此它将会占用更多的磁盘大小。
2、很难记忆。join操作性能比int要低。
3、没有内置的函数获取最新产生的guid主键。
4、GUID做主键将会添加到表上的所以其他索引中,因此会降低性能。
总结:
上面列出了GUID和INT两种数据类型做主键优缺点。我觉得,对于大数据量,建议使用guid做主键。而使用int会得到最佳的性能。
相关文章推荐
- GUID和INT两种数据类型做主键的比较
- GUID和INT两种数据类型做主键的比较
- GUID和INT两种数据类型做主键的比较
- GUID和INT两种数据类型做主键的比较
- GUID和INT两种数据类型做主键的比较
- java中Long类型数据必须转化为int才能正确比较
- java中Long类型数据必须转化为int才能正确比较
- 使用Guid做主键和int做主键性能比较
- 转载-两种将int类型的数据转换成byte数组,以及反向转换的代码
- postgresql 数据支持 jsonb/json中 array或int 类型进行的交集比较
- 主键字段使用不同数据类型的简单比较
- 使用Guid做主键和int做主键性能比较
- Sql2005下以GUID、INT、VARCHAR类型作主键及无主键时插入表的效率测试
- Java之Integer与int类型数据的比较-yellowcong
- 两种将int类型的数据转换成byte数组,以及反向转换的代码
- 关于mysql数据表myisam与innode两种类型的比较分析
- 使用Guid做主键和int做主键性能比较
- GUID字符串做主键与Number类型做主键 的执行效率比较
- asp.net MVC Model 类的主键 int类型、string类型、GUID类型。
- 利用sqlite创建一个数据user,其含有一张表person,该person表中含有三个列,其中第一字段为主键int类型的,其他两个字段自定义数据类型和名称。