【发布时间】:2010-12-08 08:17:51
【问题描述】:
所以我有一个包含超过 80,000 条记录的表,这个表称为系统。我还有另一个名为 follow 的表。
我需要我的语句从系统表中随机选择记录,其中该 id 尚未在当前用户 ID 下的下表中列出。
这就是我所拥有的:
SELECT system.id,
system.username,
system.password,
system.followed,
system.isvalid,
follows.userid,
follows.systemid
FROM system
LEFT JOIN follows ON system.id = follows.systemid
AND follows.userid = 2
WHERE system.followed = 0
AND system.isvalid = 1
AND follows.systemid IS NULL
ORDER BY RAND()
LIMIT 200
现在它工作得很好,只是它需要大约一分钟的时间才能开始使用它选择的记录来处理手头的工作。到这个时候,脚本通常会超时并且没有任何反应。
有人可以告诉我如何重做这个,所以完成了同样的想法,但它没有使用 rand 的 order?这似乎减慢了很多事情的速度。
谢谢!
【问题讨论】:
-
您的 JOIN 字段上有哪些索引?这可能是一个大瓶颈。
-
我不太清楚你的意思......
-
@Brandon 我知道这有点晚了,但如果你想要一种半简单的方式来做到这一点,你可以把它放在一个子查询中.. 有关更多详细信息,请参阅我的答案@987654321 @