我开发了一个用户评级系统,可以对用户进行分析,并在数据库中以分数保存他们的信息。
我接近100万用户评级和存储。
我遇到了从表中获取一组用户的问题(得分<50),然后将他们的ID与另一组ID进行比较,而不会让整个事情崩溃。
(得分<50)查询的结果大约是65k行,并且对比可能是1,000个用户ID,所以整个事情运行65k * 1,000。
我的数据库瓶颈是什么?或者是在比较ids?有没有更好的方法来解决这个问题?
查询 - &gt; “从userscore&lt; 50”
的用户中选择用户名,userscore然后
Foreach比较值
答案 0 :(得分:2)
由于您尚未提供任何表格或索引信息,因此我将提出建议。
userscore
上有索引。如果您的表中有超过一百万行,并且您正在使用“WHERE userscore&gt; 50”进行查询,那么该列需要一个索引。EXPLAIN
手动运行查询,即。 EXPLAIN SELECT username, userscore from users where userscore < 50
。 Optimize the results。如果您发布有关表,索引和比较的更多信息,我可能会更具体。
答案 1 :(得分:0)
似乎很容易回答。在查询之前,在/ tmp中执行日志文件的初始化。然后将microtime()的结果写入文件。在查询之后,将fwrite另一个microtime()的结果。运行一次脚本。你将能够看到以下内容:
1)你甚至到达预查询点
2)脚本是否在查询中间失败
3)如果查询没有使脚本崩溃
,查询需要多长时间