问个简单的问题,有关主键

zsdsywr123 2016-09-17 03:11:40
一般主键生成策略,有的喜欢用uuid的方式,有的喜欢自增长,我工作过几家公司,这两种方式都有采用的。

以前我喜欢uuid的主键生成策略,现在比较喜欢自增长的方式,因为数字很直观,而且用于排序也简单,还可以很容易的判断出创建时间的先后。

至于说uuid便于数据库迁移的问题,不说迁移这种事情发生的可能性大小,MySQL、oracle应该都支持自增长吧,反正MySQL肯定可以,oracle不大清楚,以前要用序列实现自增长,上次看到一个帖子,水果版主好像说过新版oracle也支持自增长了,那么就不存在迁移问题了吧。当然oracle我两年多没用了,真的不是很了解,说的不对的,请大家指正。

现在想问问各位DBA,在实际应用中更倾向于那种主键生成策略,并且可以点明其中的好处,谢谢!
...全文
183 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zsdsywr123 2016-09-21
  • 打赏
  • 举报
回复
引用 5 楼 wmxcn2000 的回复:
[quote=引用 4 楼 zsdsywr123 的回复:] 是的,我也觉得数字自增长的主键生成方式更好点,你说的那些优势都对。 另外多问一句,uuid的生成方式相对于数字自增长又有什么优势呢?
uuid 的重复性比较小,比如你的两套系统要合并,这里时候,可以直接把两张表数据并在一起,主键基本上不会重复; 而数值型,都是从 1 开头,很容易就重复了;[/quote] 太精彩了!100分奉上!
卖水果的net 2016-09-21
  • 打赏
  • 举报
回复
引用 4 楼 zsdsywr123 的回复:
是的,我也觉得数字自增长的主键生成方式更好点,你说的那些优势都对。 另外多问一句,uuid的生成方式相对于数字自增长又有什么优势呢?
uuid 的重复性比较小,比如你的两套系统要合并,这里时候,可以直接把两张表数据并在一起,主键基本上不会重复; 而数值型,都是从 1 开头,很容易就重复了;
zsdsywr123 2016-09-21
  • 打赏
  • 举报
回复
引用 1 楼 wmxcn2000 的回复:
主鍵是哪个数据类型存储, DBA 基本上不关心这个,尤其是运维的 DBA,就是开发DBA 如果不是自己设计的数据,他不会去根据自己喜好去修改这些表的类型; 比较常见的这鍵,除了你提到的那两种数据自身带的,还有一些应用程序,会在程序代码中生成 UUID ; 数据迁移时,也不会有问题,无非就是你表中有什么数据,就迁移什么 ; 在我从头开始参与一个新项目时,我做数据库的设计,都比倾向于使用数值型,原因两个,一是占位空间少,二是运算速度要快;
是的,我也觉得数字自增长的主键生成方式更好点,你说的那些优势都对。 另外多问一句,uuid的生成方式相对于数字自增长又有什么优势呢?
sych888 2016-09-18
  • 打赏
  • 举报
回复
记得有次迁移,用的是触发器来实现自增 一般情况下用 序列,速度快,业务无关性
卖水果的net 2016-09-17
  • 打赏
  • 举报
回复
主鍵是哪个数据类型存储, DBA 基本上不关心这个,尤其是运维的 DBA,就是开发DBA 如果不是自己设计的数据,他不会去根据自己喜好去修改这些表的类型; 比较常见的这鍵,除了你提到的那两种数据自身带的,还有一些应用程序,会在程序代码中生成 UUID ; 数据迁移时,也不会有问题,无非就是你表中有什么数据,就迁移什么 ; 在我从头开始参与一个新项目时,我做数据库的设计,都比倾向于使用数值型,原因两个,一是占位空间少,二是运算速度要快;
jdsnhan 2016-09-17
  • 打赏
  • 举报
回复
我们在设计的时候,规定主键不参与业务,不会从主键上看到业务上的含义,所以,哪种主键看个人习惯。我习惯用序列

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧