繁体   English   中英

php:生成MySQL数据库列中尚未存在的5位数字的最快方法(具有唯一属性)

[英]php: quickest way to generate a 5-digit number not already in MySQL db column (with a unique attribute)

假设Table1包含列orderid(不是键,尽管它是NOT NULL且唯一)。 它包含5位数字。 什么是生成不在该列中的php var $ unique_var的最佳方法。 重要的是,表中有10%到30%的5位数字(所以生成一个数字并检查while (mysql_num_rows() ==0) {}不是找到一个的最好方法,有没有更好的性能解决方案?)。

谢谢。

如果只有 10-30%的数字已经被采用 - 那么这意味着只有 10-30%的查询将被执行至少两次。 这根本不是一个大的性能问题。

否则 - 只需创建全5位数字列表(仅100k行)并删除所有存在的表。 当你需要另一个随机数时 - 只需选择一个并删除。

我建议找到最大的数字(使用MAX()子句)并从那里开始。

以下是一些建议。 每个都有它的缺点。

  1. 预先填充表并添加一列以指示数字未使用。 使用LIMIT = 1选择未使用的数字并标记使用。 这占用了大量空间。
  2. 保留包含以前使用的数字的单独表格。 如果该表为空,则从最后使用的数字开始按顺序生成数字(如果Table1为空,则从00001开始生成数字)。 这需要一些额外的簿记。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM