【发布时间】:2011-07-19 19:24:39
【问题描述】:
我想生成唯一的代码编号(完全由 7 位数字组成)。码号随机生成并保存在 MySQL 表中。
我还有一个要求。所有生成的代码应至少相差两位数。这对于在键入用户代码时防止错误很有用。希望它可以防止在执行某些操作时引用另一个用户代码,因为它不太可能丢失两位数并匹配另一个现有用户代码。
生成算法的工作原理如下:
- 从 MySQL 表中检索所有以前的代码(如果有)。
- 一次生成一个代码。
- 用所有之前的代码减去生成的代码。
- 检查减法结果中的非零位数。
- 如果大于 1,则接受生成的代码并将其添加到之前的代码中。
- 否则,跳转到 2。
- 重复步骤 2 到 6 以获得请求的代码数量。
- 将生成的代码保存在数据库表中。
算法运行良好,但问题与性能有关。请求生成大量代码时,生成代码需要很长时间,例如:10,000。
问题:有没有办法提高这个算法的性能?
如果重要的话,我在 Ubuntu 服务器上使用 perl + MySQL。
【问题讨论】:
标签: mysql algorithm perl performance optimization