字符串做主键,效率相比数字会低多少呢?

humanity 2006-03-26 01:49:35
我有这个想法,
我的标的主键都是生成的,跟具体业务数据没有相关性。

我想过2个法子:
1: 是很多人都用的 sequence 生成的,但使我担心以后导入会重复么?
2: 我用 UUID 生成器生成的字符串(用 MAC 地址 + System.currentTimeMills()) ,这个重复的概率太低了,我又担心做主键可能效率比数字低很多,但是我不知道怎么比较这两种效率?

我用 UUID 可行么?
...全文
796 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
humanity 2006-04-21
  • 打赏
  • 举报
回复
Sorry.看错了,有位兄弟没给分。
humanity 2006-04-21
  • 打赏
  • 举报
回复
忘了撕帖
goldarcher2005 2006-03-31
  • 打赏
  • 举报
回复
用UUID和rowid有什么区别,如果主键和业务完全脱离,就不要建主键了
humanity 2006-03-28
  • 打赏
  • 举报
回复
我说的 UUID 是 :e0d36b8c-c9e7-3519-9607-8ace76c120cd 这种形式,
我跑了 2 百万个,都没有发现有重复的, 我是使用 MAC 地址 + System.currentTimeMills() 种子使用 UUID 生成器生成的 。

是不是我导入数据就一次性导入所有数据而不能只导入一部分?


[ lilyway(cicydos) ] 说的
至于长度有关是怎么回事?
我猜想 Oracle Number 光一个数字能表示 19 位么,最大最小精度分别是多少啊 ?
当然我知道比起字符串效率还是应该高点吧。

lilyway 2006-03-27
  • 打赏
  • 举报
回复
不管数字还是字符在oracle内都是以它内部的格式处理,只与长度有关。
开发者开聊 2006-03-27
  • 打赏
  • 举报
回复
1: 是很多人都用的 sequence 生成的,但使我担心以后导入会重复么?

效率高是显然的,
为什么会重复? sequence是可以你自己控制的
主键都是生成的,跟具体业务数据没有相关性,那么就是解决重复问题也很简单

2: 我用 UUID 生成器生成的字符串(用 MAC 地址 + System.currentTimeMills()) ,这个重复的概率太低了,我又担心做主键可能效率比数字低很多,但是我不知道怎么比较这两种效率?

对于服务器,MAC 地址这个东西是不变的,放在主键上有什么意思?


  • 打赏
  • 举报
回复
字符串的比较是一个一个字符的比较,而整形只需要比较一次,你去慢慢衡量吧
例如:
abcdefg和abcdefgh要比较8次,而100000000和1000000000只需要比较-次

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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