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