我有这个想法,
我的标的主键都是生成的,跟具体业务数据没有相关性。我想过2个法子:
1: 是很多人都用的 sequence 生成的,但使我担心以后导入会重复么?
2: 我用 UUID 生成器生成的字符串(用 MAC 地址 + System.currentTimeMills()) ,这个重复的概率太低了,我又担心做主键可能效率比数字低很多,但是我不知道怎么比较这两种效率?我用 UUID 可行么?
我的标的主键都是生成的,跟具体业务数据没有相关性。我想过2个法子:
1: 是很多人都用的 sequence 生成的,但使我担心以后导入会重复么?
2: 我用 UUID 生成器生成的字符串(用 MAC 地址 + System.currentTimeMills()) ,这个重复的概率太低了,我又担心做主键可能效率比数字低很多,但是我不知道怎么比较这两种效率?我用 UUID 可行么?
例如:
abcdefg和abcdefgh要比较8次,而100000000和1000000000只需要比较-次
为什么会重复? sequence是可以你自己控制的
主键都是生成的,跟具体业务数据没有相关性,那么就是解决重复问题也很简单2: 我用 UUID 生成器生成的字符串(用 MAC 地址 + System.currentTimeMills()) ,这个重复的概率太低了,我又担心做主键可能效率比数字低很多,但是我不知道怎么比较这两种效率? 对于服务器,MAC 地址这个东西是不变的,放在主键上有什么意思?
我跑了 2 百万个,都没有发现有重复的, 我是使用 MAC 地址 + System.currentTimeMills() 种子使用 UUID 生成器生成的 。是不是我导入数据就一次性导入所有数据而不能只导入一部分?
[ lilyway(cicydos) ] 说的
至于长度有关是怎么回事?
我猜想 Oracle Number 光一个数字能表示 19 位么,最大最小精度分别是多少啊 ?
当然我知道比起字符串效率还是应该高点吧。