我们公司的数据库全部是使用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会得到最佳的性能。

本文转自麒麟博客园博客,原文链接:http://www.cnblogs.com/zhuqil/archive/2010/12/02/1894575.html,如需转载请自行联系原作者

GUID和INT两种数据类型做主键的比较相关推荐

  1. pandas的两种数据类型:Series和DataFrame

    首先要明确pandas是做什么的,在确定是如何做的,通过哪些方式去做的? pandas是做什么的? Python Data Analysis Library 或 pandas 是基于NumPy 的一种 ...

  2. 分析Java的两种数据类型

    一.Java的两种数据类型 1.基本数据类型:四类八种 整数型:byte short int long 浮点数型:float double 布尔型:boolean 字符型:char 2.引用数据类型: ...

  3. 实验long raw 和 blob两种数据类型遇到dblink的表现

    首先long raw从Oracle 10g开始就不再被建议使用,建议用blob代替.同理,long建议用clob代替. 本文从运维角度实验long raw 和 blob两种数据类型在遇到dblink时 ...

  4. mysql添加两种数据类型_MySQL入门(二) 数据库数据类型详解

    序言 今天去健身了,感觉把身体练好还是不错的,闲话不多说,把这个数据库所遇到的数据类型今天统统在这里讲清楚了,以后在看到什么数据类型,咱度应该认识,对我来说,最不熟悉的应该就是时间类型这块了.但是通过 ...

  5. python创建字典的两种方法要求键星期一到星期天_Python3笔记019 - 4.4 字典

    第4章 序列的应用 4.1 序列 4.2 列表 4.3 元组 4.4 字典 4.5 集合 4.6 列表.元组.字典.集合的区别 python的数据类型分为:空类型.布尔类型.数字类型.字节类型.字符串 ...

  6. 验证整数 Double 转 int 两种写法

    Double  转int 1)之前一直是使用强转 Double num = Double.parseDouble(object.toString());    int n = (int)num;    ...

  7. Python_pandas 两种主要的数据类型(Series、DataFrame)

    因为是数学专业,最开始深入学习的是MATLAB(下面简称M),感受最深的就是M的简单高效,高精度,不管什么东西,统统放到数组(或者说矩阵)里面,天哪噜,不可思议,和C语言.C++相比,这玩意就是个天生 ...

  8. JS教程之 识别 JavaScript 数据类型:两种方法就足够了

    Primitive type原始类型: Null.Undefined.Number.String.Boolean.Symbol.BigInt vObject type 对象类型: Object 你知道 ...

  9. 简单介绍Python中的几种数据类型

    大体上把Python中的数据类型分为如下几类: Number(数字) 包括int,long,float,complex String(字符串) 例如:hello,"hello",h ...

最新文章

  1. 3D视觉技术的6个问答
  2. python写完程序保存_Python学习笔记——文件处理
  3. python 的日志logging模块学习
  4. Multiple markers at this line
  5. 拉5000万存款,银行客户经理能拿40万奖金?
  6. 从DevOps到Cloud Native,应用上云姿势全解锁
  7. head first java原文_Head First Java
  8. 均衡原理_干货什么是负载均衡?负载均衡原理详解
  9. MySQL的INSERT INTO··· ON DUPLICATE KEY UPDATE使用的几种情况
  10. Coursera NLP 笔记02
  11. OJ1075: 聚餐人数统计(C语言)
  12. ios 旋转屏幕试图切换_TCL·XESS 旋转智屏 A200Pro 评测:方向一换,体验大不相同...
  13. 如何使用Linux重置Windows密码
  14. Nsight2.0安装及单机调试(CUDA4.0)设置经验
  15. linux紧急救援模式,如何在 Ubuntu 18.04 中启动到救援模式或紧急模式
  16. 质量值体系 Phred33 和 Phred 64 的由来 及其在质量控制中的实际影响
  17. 支付宝客户端架构解析:iOS 客户端启动性能优化初探
  18. 滴滴上市,我的一位前同事身家过亿了!
  19. Android5.0 下拉通知栏快捷开关的添加(必看)
  20. 新致新知 | ChatGPT+企业知识图谱

热门文章

  1. 自考--网络经济与企业管理--选择易考题
  2. Tips--解决安装Multisim时出现No software will be installed or removed无法安装的问题
  3. VMware提供的几种工作模式?
  4. java线程锁标记_java 线程 中断标志位
  5. mysql集群如何保障数据分布均匀_如何保证数据库集群时候,主从库一致性的问题?...
  6. 神奇的判断数组名和指针的区别
  7. H3C 环路避免机制六:触发更新
  8. 领扣简单版--两数之和(Two Sum)
  9. 多线程---ReentrantLock
  10. [深入学习Redis]RedisAPI的原子性分析