在 C# 中生成唯一编号

本文关键字:唯一 编号 | 更新日期: 2023-09-27 18:36:29

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

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

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

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

在 C# 中生成唯一编号

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

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

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

您可以生成新的序列 GUID 并获取其 20 个字符而不是"-"符号并插入到数据库中。这个GUID不是用户友好的,所以没有人能轻易记住这一点。