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