我想要一个PHP代码来逐个绘制一些ID,而不需要从MySQL数据库中的表中随机替换。没有替换的随机抽取
现在我实现它是这样的:
有一个叫箱
CREATE TABLE box
(
id INT UNSIGNED AUTO_INCREMENT,
PRIMARY KEY (id)
);
说它包含15条记录表,
箱
id:
=====
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
=====
具有的ID在下一次抽签中将被记录并排除。
例如,
在开始时,用来绘制SQL将是
SELECT id FROM box RAND() LIMIT 1;`.
说出结果为4。
然后我得出如图4所示,用于绘图的下一个SQL将是
SELECT id FROM box WHERE id != 4 ORDER BY RAND() LIMIT 1;
说这个结果是6次。
也就是说,我得出4和6,所以绘制的下一个SQL将
SELECT id FROM box WHERE id != 4 AND id != 6 ORDER BY RAND() LIMIT 1;"
的问题是:
如果表中的“盒子”中包含2000条记录,我有绘制了1000多个ID,下一个绘图的SQL将会很长。 我想知道更长的SQL语句会使MySQL中的程序或进程运行速度变慢吗?如果是的话,是否有解决此问题的解决方案/设计/算法? 表中的记录可能会增加,因此我无法在绘图前在ID上制作随机序列。
更多关于这个问题:
的PHP代码将被多个用户调用,因此每个用户都有已被支取/她一些不同的ID。
实际上,在我目前的设计中,用户绘制的ID存储在PHP会话变量中。当用户想要绘制时,存储在会话变量中的ID将会像上面那样访问绘图SQL。
这是因为多个用户将使用该代码来绘制id。 实际上,已绘制的ID保存在会话中。 – Timespace7
我不确定我是否理解......为什么有多少用户正在绘制数字?你是说每个用户每个号码可以绘制一次吗?在这种情况下,创建一个附加表格将用户映射到已为该用户绘制的数字 –