Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C语言中的唯一数生成#_C#_Unique - Fatal编程技术网

C# C语言中的唯一数生成#

C# C语言中的唯一数生成#,c#,unique,C#,Unique,我有一个大约100000条记录的大容量插入,它将进入一个具有唯一值列的oracle表。这种批量插入将在几年内每天发生两到三次(永无止境) 需要一个健壮的机制来生成唯一值列的唯一数。我正在构建数据集以立即提交到数据库 之前,我在oracle中创建了序列,在构建数据集行时,点击数据库,获取新序列号并将其放入该列。但它会带来性能问题,因为对于100000条记录,需要100000次数据库访问 任何其他方法。此唯一值列为varchar2,最大长度为20如果您只执行批量插入,为什么不使用触发器创建一个新的序

我有一个大约100000条记录的大容量插入,它将进入一个具有唯一值列的oracle表。这种批量插入将在几年内每天发生两到三次(永无止境)

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

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


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

如果您只执行批量插入,为什么不使用触发器创建一个新的序列GUID?

您可以生成新的序列GUID,并将其20个字符而不是“-”符号插入到数据库中。此GUID不便于用户使用,因此任何用户都无法轻松记住它。…

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


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

一个10个字符多少钱?这里不是每个人都是印度人,显然是100000。这意味着对于每条记录,我们需要点击数据库以获得唯一的编号。根据这一点,很多时候我们需要在可接受的范围内达到db。我想在家里做这件事。NET@AkkiJ数据库会自动为您生成唯一的编号,开销很小,您不会在问题中声明需要立即再次使用该ID,因此在批量导入完成后,只需执行一个查询以选择所需的所有行。GUID会很好,但如果多个会话并行运行并访问生成GUID的同一个函数,然后会有一个巨大的重复,我们无法比较新生成的唯一数字是否在表中,因为性能开销数字不需要是连续的。20个字符单词中的唯一约束应该是唯一的(如GUID)。但是我将在其中放置GUID生成器函数的DLL可以在多个会话中访问,并且在多个会话中,它将生成重复的GUID GUID是全局唯一的,跨计算机和会话(如果使用相同的算法),即使是在同一时刻生成的。我们有一个在数据存储中使用guid作为主键的系统。一个表有数百万行,由多台并行运行的机器插入,在过去的2.5年中,我们从未遇到过冲突。有代码/算法吗?GUID.NEWID()在计算机和会话之间的依赖关系是否与您在上述注释中提到的相同。请阅读文档:Gaurav,如果在并行运行的多个会话中访问GUID生成函数,则GUID不适用,因为如果不同的会话访问同一GUID生成函数,它将生成重复的GUID