基本上我试图拉一个用户尚未从数据库中回应的随机投票问题.这个查询大概需要10-20秒才能执行,这显然不是很好!响应表大约有30K行,数据库也有大约300个问题.
SELECT questions.id FROM questions LEFT JOIN responses ON ( questions.id = responses.questionID AND responses.username = 'someuser' ) WHERE responses.username IS NULL ORDER BY RAND() ASC LIMIT 1
问题和答案表的PK是“id”,如果重要.
任何建议将不胜感激.
解决方法
你最有可能需要一个索引
responses.questionID responses.username
没有索引通过30k行搜索将总是很慢.