SQL GUID和自增列做主键的优缺点

摘要:
我们公司的数据库都使用GUID作为主键。许多人习惯于使用int作为主键。使用INT作为主键的缺点1.如果有频繁的合并表操作,主键可能会被重复。使用GUID作为主键的优点:1.它是唯一的。使用GUID作为主键的缺点:1.存储空间很大,因此会占用更多的磁盘大小。

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

免责声明:文章转载自《SQL GUID和自增列做主键的优缺点》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Linux ${} 变量内容的提取和替换功能等netty中的UDP下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

java使用jdbc对sqlite 添加、删除、修改的操作

package com.jb.jubmis.Dao.DaoImpl; import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import...

foreach 循环遍历 以及函数的应用

foreach( 对集合每个元素的引用 in 集合 ){} 举例: int[] a = new int[5]{1,2,3,4,5};foreach( int b in a ){ //b就是a中的每个元素} 注意:1.foreach只能对集合进行遍历。2.foreach在操作集合的时候,只能读不能改; 3.foreach操作Dictionary<T,T...

win2008 r2 安装sqlserver2005 sp3报错

今天安装OCS,安装完AD之后,关联数据库,结果提示必须要sqlserver 2005 SP2以上版本,我的服务器用的是WIN2008 R2 (X64)的,下了一个SP3,更新过程中提示"Error 29528. The setup has encountered an unexpected error while Setting Internal Pro...

oracle的热备份和冷备份

一、冷备份介绍:    冷备份数据库是将数据库关闭之后备份所有的关键性文件包括数据文件、控制文件、联机REDO LOG文件,将其拷贝到另外的位置。此外冷备份也可以包含对参数文件和口令文件的备份,但是这两种备份是可以根据需要进行选择的。,冷备份实际也是一种物理备份,是一个备份数据库物理文件的过程。因为冷备份要备份除了重做日志以外的所有数据库文件,因此也被成为...

数据库操作封装类 DBHelper.cs

using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Configuration; using System.Data.Common; using System.Data; namespace Model {...

使用SyncNavigator轻松实现数据库异地同步、断点续传、异构同步

最近一直在研究数据库同步的问题,在网上查了很多资料,也请教了很多人,找到了一种通过快照复制的方法。研究了一番后发现之前就是用的这个方法,效果不是很好,果断放弃。经过了一番寻觅和他人指点,最后从一位热心网友那里得知一款很好用的软件—— SyncNavigator。 好东西就要拿出来跟大家分享,所以今天向大家介绍一下这款软件,及其一些使用方法。下面先看看它有...