3

我有一个唯一代码的 SQL 数据库(由数字/字母组成)。

我想为这个数据库生成大量的新代码,这还需要考虑到以前没有用任何种子或类似的代码生成的代码。

那么,我将如何以最好的方式做到这一点?当前完成的方式是,对于生成的每个代码,它都会遍历数据库中的所有代码,并确保 levenshtein 距离不小。但是现在数据库已经变大了,这需要永远。

任何帮助表示赞赏。这用于 ASP.NET C# 应用程序。

4

1 回答 1

0

如果发布代码的总数、代码的长度和可接受的 Levenshtein 距离足够小,您可以在内存中构建现有代码及其“Levenshtein 邻居”的树,以将生成新代码的时间减少到 O(ln N)。如果代码太多,您可以尝试创建一个仅包含代码和邻居的附加 SQL 表,并依靠 SQL 进行 O(ln N) 搜索。当您插入新代码时,将其相邻代码一起插入。

如果您有灵活性,即您可以将代码长度增加 1 或在可接受的字符集中添加一个新字符,或者如果某个位置有未使用的字符,最好的解决方案是将“旧”和“新”分开' 代码空间并通过算法生成新空间以满足您的要求。当他们决定不在其中使用计算机的 MAC 地址时,对 UUID/GUID 采用了这种方法。

于 2014-04-01T09:56:04.697 回答