2

我有大约 100,000 条记录的批量插入,这些记录将插入到具有一个唯一值列的 oracle 表中。这种批量插入将每天发生两次或三次,最长可达多年(永无止境)。

需要一个健壮的机制来生成唯一值列的唯一编号。我正在构建数据集以立即提交到数据库。

以前我在 oracle 中创建了序列,在构建数据集行时,访问数据库,获取新的序列号并放入该列。但它会带来性能问题,因为对于 100,000 条记录,需要 100,000 次数据库命中。

任何其他方法。此唯一值列是 varchar2,最大长度为 20

4

3 回答 3

3

如果您只进行批量插入,为什么不使用触发器创建自动编号序列?

于 2012-06-07T06:20:39.390 回答
0

您没有提到数字必须是连续的(1..n),所以也许您可以生成 GUID 并以紧凑的方式表示它们。从长远来看,您可能会遇到冲突,在这种情况下,您可以生成新的 GUID。

我看到的唯一问题是您需要 25 个字符来表示 Base64 中的 GUID(如果去掉填充,则需要 23 个字符)。

于 2012-06-07T06:31:24.713 回答
-2

您可以生成新的序列 GUID 并取其 20 个字符而不是“-”符号并插入数据库。此 GUID 对用户不友好,因此没有人可以轻松记住这一点....

于 2012-06-07T06:24:12.697 回答