数据库
首页 > 数据库> > MySQL Long表的唯一随机字符串的最佳方法

MySQL Long表的唯一随机字符串的最佳方法

作者:互联网

我知道如何在PHP和MySQL上创建随机字符,但问题是我必须为1万行左右的表创建4个字符的随机字符串.最好的方法是确保它保持唯一性?

如果需要,我可以使用更长的字符串,但不能超过12.

为了简单起见,表存在,我需要添加一个额外的列,并用4个字符的随机字符串填充它,并且键必须保持唯一.

解决方法:

一个选项:

将所有可能的字符放在只有一列的表中.

val
------
0
1
...
9
a
b
...
z

使用此查询

SELECT CONCAT(a.val,b.val,c.val,d.val)
FROM chars AS a
JOIN chars AS b
JOIN chars AS c
JOIN chars AS d
ORDER BY RAND()
LIMIT 10000

另一方面,如果您一次需要获取一个ID,我会看到两种方法.

答:如果您有很多未分配的ID.

在这种情况下,您只需生成一个ID,然后查看它是否免费.如果没有尝试另一种.

B.如果要保持分配的ID和可用ID处于相同的幅度级别.

在这种情况下,最好预先生成您的所有ID,将它们洗牌,当您需要一个ID时,只需选择下一个可用的ID即可.假设将它们全部放在一个表中,然后从该表中分配一个,则将其删除,以免再次被选中.

如果允许的字符是0-9a-z,则表示表格将占据364.这仅是几MB.

标签:random,relational-database,mysql,database
来源: https://codeday.me/bug/20191023/1914649.html