- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我想要一个 PHP 代码来从 MySQL 数据库中的表中一个一个地抽取一些 id 而不是随机替换。
现在我是这样实现的:
有一个表叫box
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;"
问题在于:
如果'box'表有2000条记录,我画了1000+个id,接下来画的SQL会很长。 我想知道更长的SQL语句是否会使程序或MySQL中的进程运行得更慢?如果是,是否有解决方案/设计/算法来解决这个问题? 表中的记录可能会增加,所以我无法在绘制之前对id进行随机排序。
关于问题的更多信息:
PHP代码会被多个用户调用,所以每个用户都有自己绘制的一些不同的id。
实际上,在我目前的设计中,用户绘制的 ID 存储在 PHP session 变量中。当用户想要绘图时,存储在 session 变量中的 ids 将被访问用于绘图 SQL,如上所示。
最佳答案
大部分编写的查询将花费与您的查询大致相同的时间。
顺便说一下,您查询中的条件等同于 NOT IN,您可能更容易应用 NOT IN
SELECT * FROM box WHERE id NOT IN (a[0],a[1]...)
现在关于增加查询大小是否会降低 MySQL 的速度,答案是否定的,不是真的。
关于为什么它不会减慢速度的文章是 here (记住你的查询等同于一个 not in)
关于php - 随机抽取不更换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13788600/
我需要能够用从 ajax 请求获得的响应替换整个文档内容。 我尝试分配给 document.body.innerHTML 并尝试使用 document.write()。虽然这两个功能都可以在桌面 Sa
我有一篇 jQuery 文章,用更新的产品替换了 div。网格是用同位素格式化的,但我不知道如何使其在更新后重新格式化网格。 $.post(url, function(data) { $('#
我正在使用gradle过滤使用以下代码替换一个log4j.xml中的 token 。 import org.apache.tools.ant.filters.ReplaceTokens task co
我正在尝试改变在 MacVim 中,减少腕管诱导。我添加了这一行 let mapleader="," 到我的 .gvimrc,但“\”仍然是唯一有效的键。我错过了什么吗? 最佳答案 该行需要进入正常的
我正在尝试: 将双空格替换为单空格。 干净 修剪 与我使用相同的字符串: AmountI = Replace(Application.WorksheetFunction.Clean(Trim(.Cel
在我的 NEO-MAIL.xml文件,我看到条目为: {neo.rootdir}/Mail/Spool 我的 ColdFusion 安装在 C:\ ,空间不足,所以我想将线轴移动到不同的目
将 Xstream 升级到 1.4.8 后,我注意到 XstreamConverter 和 XstreamRepresentation 已被弃用。 两个问题: 我应该替换我的 xstream 注释吗?
我有一个名为 fulldata 的数据对象,它是一个对象数组。 fulldata = [ {'key': 'abc', values: {.....},....}
我有一个网络应用程序正在运行从 csv 文件生成的数据库表。 此表需要经常从 csv 更新。该表需要与 csv 完全匹配,即如果 csv 中不再存在记录,则该记录不应再存在于表中或应被软删除。 执行此
我有一个 MySQL 数据库 mydb 和一个测试环境中的数据库 mytestdb,它镜像 mydb。我需要一种将更改从测试数据库“推送到实时数据库”的方法。所以伪代码的过程就像 for each t
因此,我制作了一个单独的迁移文件来更改数据库表中的列名称。问题是,当我尝试进入包含表的页面时,我在尝试更改的列名称上收到未定义的方法错误。 我的教授告诉我,我必须先更改 View / Controll
我正在尝试通过调用 -replacePassWithPass: 并传递与 PKPassLibrary 中已存在的完全相同的通行证来更新 Passbook 中的通行证。方法返回 NO(替换失败) - 为
我在替换 || 时遇到问题字符。 str="Example || sentence"; document.write(str.replace(/||/g, "+")); // it g
因此,我们有一项繁忙的旧 Web 服务需要被新服务取代。旧版 Web 服务是使用 WAR 文件部署在 apache tomcat 服务器上的。也就是说,它被复制到 tomcat 下的 web apps
对于我目前正在开发的应用程序,我们希望从用户的 SIM 卡中读取数据,这工作正常。我们想让用户可以在应用程序运行时切换 SIM 卡。执行此操作时,操作系统请求设备重启,我们似乎无法抑制此消息。 有没有
手机换卡时如何访问事件? 最佳答案 基本上,这个问题“How to monitor SIM state change”的答案也是您问题的正确答案。 所以你创建了一个新类 package a.b.c;
我的代码中包含以下两行:- instanceMethod = new.instancemethod(testFunc, None, TestCase) setattr(TestCase, testNa
这个问题在这里已经有了答案: Explain example pipeline from Python subprocess module (1 个回答) 关闭去年。 在 subprocess 模块
如 Controller已弃用,有没有好的替代品? 我明白为什么它被弃用了,但现在需要找到它的替代品。 假设我需要将一些函数发布到HTML(因此无法使用Decorators),但没有任何模板HTML(
我有一个小代码可以在一列中格式化电话号码,从某种意义上说: -如果中间有空格,则将其删除 - 之后,从右边开始取 9 个数字,并检查它是否为整数,如果是,则将其放入单元格中。 问题是完成所有替换需要将
我是一名优秀的程序员,十分优秀!