我有大约 100,000 条记录的批量插入,这些记录将插入到具有一个唯一值列的 oracle 表中。这种批量插入将每天发生两次或三次,最长可达多年(永无止境)。
需要一个健壮的机制来生成唯一值列的唯一编号。我正在构建数据集以立即提交到数据库。
以前我在 oracle 中创建了序列,在构建数据集行时,访问数据库,获取新的序列号并放入该列。但它会带来性能问题,因为对于 100,000 条记录,需要 100,000 次数据库命中。
任何其他方法。此唯一值列是 varchar2,最大长度为 20
如果您只进行批量插入,为什么不使用触发器创建自动编号序列?
您没有提到数字必须是连续的(1..n),所以也许您可以生成 GUID 并以紧凑的方式表示它们。从长远来看,您可能会遇到冲突,在这种情况下,您可以生成新的 GUID。
我看到的唯一问题是您需要 25 个字符来表示 Base64 中的 GUID(如果去掉填充,则需要 23 个字符)。
您可以生成新的序列 GUID 并取其 20 个字符而不是“-”符号并插入数据库。此 GUID 对用户不友好,因此没有人可以轻松记住这一点....