自增ID(int):

一般在单机项目,或者小型项目里,使用 自增 ID(int):优点:
(1)数据库自动编号,速度快,而且是增量增长,按顺序存放,对于检索非常有利;
(2)数字型,占用空间小,易排序,在程序中传递也方便;
(3)如果通过非系统增加记录时,可以不用指定该字段,不用担心主键重复问题。
其实它的缺点也就是来自其优点,缺点如下:
(1)因为自动增长,在手动要插入指定ID的记录时会显得麻烦,尤其是当系统与其它系统集成时,需要数据导入时,很难保证原系统的ID不发生主键冲突(前提是老系统也是数字型的)。特别是在新系统上线时,新旧系统并行存在,并且是异库异构的数据库的情况下,需要双向同步时,自增主键将是你的噩梦;
(2)在系统集成或割接时,如果新旧系统主键不同是数字型就会导致修改主键数据类型,这也会导致其它有外键关联的表的修改,后果同样很严重;
(3)若系统也是数字型的,在导入时,为了区分新老数据,可能想在老数据主键前统一加一个字符标识(例如“o”,old)来表示这是老数据,那么自动增长的数字型又面临一个挑战。

UUID(varchar)优点:

(1)在分库分表的情况下,UUID 更符合项目的架构

(2)系统集成时,可以更好的对关联表数据进行修改。

(3)对老数据的处理更加方便,直接在主键前加 标示性字符就可以

当然缺点也很明显:

(1)检索时不够便捷

(2)字符型占用空间大,不易排序,会引来不必要的代码

(3)数据量过大时候,需要考虑到  id  是否重复的问题。

自增ID(int):一般在单机项目,或者小型项目里,使用 自增 ID(int):优点:(1)数据库自动编号,速度快,而且是增量增长,按顺序存放,对于检索非常有利;(2)数字型,占用空间小,易排序,在程序中传递也方便;(3)如果通过非系统增加记录时,可以不用指定该字段,不用担心主键重复问题。其实它的缺点也就是来自其优点,缺点如下:(1)因为自动增长,在手动要插入指定ID的记录时... 之前有段时间用postgresql 数据库,在上云之后,从 自增 主键 变为 uuid ,感觉 uuid 全球唯一,很方便。 最近用mysql,发现mysql 主键 都是选择 自增 主键 ,仔细比较一下,为什么mysql选择 自增 主键 ,有什么不同。 在mysql5.0之前,如果是多个master复制的环境,无法用 自增 主键 ,因为可能重复。在5.0以及之后的版本通过配置 自增 偏移量解决了整个问题。 什么情况下我们希...
偶然的机会,得知mysql 主键 的类型采用 varchar UUID 的查询性能没有 int 型做 主键 好。网上查询大量资料,都是停留在理论上的,因此,自己写了代码进行实测,以下结果仅供参考,不具备权威性。 三个表的字段,除了 主键 ID 分别采用 varchar ,big int 和自动增长big int 不同外,其他三个字段都为 varchar 36位 数据库:mysql5.5 表类型:InnoDB 数据...
最近在使用数据库要建表选择 主键 的时候,突然想到经常使用的两类 主键 id —— 自增 id UUID 有什么区别,用那种更好?之前使用MySql的时候通常直接就选择了 自增 id 了,工作的时候也看到有些项目使用 UUID 主键 ,但是都没怎么考虑两者的区别, 优缺点 之类的。现在要键新表选择 主键 的时候,就需要考虑选择哪种做 主键 了,因此就有了这篇文章 本文首先分别简单为什么数据库需要 主键 ,然后介绍 自增 id UUID ,接着比较两者的区别,最后给出何时使用哪种类型做 主键 更好。 关系型数据库中的 主键 在关系型数据库模型中,关系型数据库是一
答案是:在互联环境下使用 UUID 好,因为数据的安全性。 我们都知道 自增 id 有:存储空间小,性能高,好记的优点,但是在分布式系统中容易出现 id 容易出现重复情况,还有是数据安全性比较低,容易根据 id 号推测出有多少数据,其他数据的 id 是什么。 而 UUID 的最大优点:不好记忆,没有规律性,基本不会出现重复情况,所以在分布式系统和互联网中大量的被使用,不好的地方就是比较占用存储空间,性能相对 自增 id 较低。
数据库 自增 ID ,不需要设置和绑定 ID 数据列。在往数据库中插入数据的时候,数据库会自动为每条数据生成一个递增的 ID ,本文做了详细的说明。如下图: 实例??? 第一步:登陆PG ??? 第二步:创建表 ??? 第三步:现在往表中插入几条记录??? 查看 COMPANY 表的记录如下 大家点赞、收藏、关注、评论啦 ???微信公众号???...
可以使用 UUID 作为 主键 ,但是 UUID 是不可 自增 的。如果需要 自增 主键 ,可以使用MySQL提供的AUTO_INCREMENT属性。例如: CREATE TABLE `table_name` ( ` id ` INT (11) NOT NULL AUTO_INCREMENT, `name` VARCHAR (50) NOT NULL, PRIMARY KEY (` id `) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 其中, id 自增 主键 ,每次插入数据时会自动增加。