大比较 - MySQL和PHP

时间:2010-01-29 22:37:31

标签: php mysql

我开发了一个用户评级系统,可以对用户进行分析,并在数据库中以分数保存他们的信息。

我接近100万用户评级和存储。

我遇到了从表中获取一组用户的问题(得分<50),然后将他们的ID与另一组ID进行比较,而不会让整个事情崩溃。

(得分<50)查询的结果大约是65k行,并且对比可能是1,000个用户ID,所以整个事情运行65k * 1,000。

我的数据库瓶颈是什么?或者是在比较ids?有没有更好的方法来解决这个问题?

查询 - &gt; “从userscore&lt; 50”

的用户中选择用户名,userscore

然后

Foreach比较值

2 个答案:

答案 0 :(得分:2)

由于您尚未提供任何表格或索引信息,因此我将提出建议。

  • 确保userscore上有索引。如果您的表中有超过一百万行,并且您正在使用“WHERE userscore&gt; 50”进行查询,那么该列需要一个索引。
  • 确保您的查询正在使用该索引。在前面用EXPLAIN手动运行查询,即。 EXPLAIN SELECT username, userscore from users where userscore < 50Optimize the results
  • 你还没有提到你是如何进行id比较的,所以我假设它是在一个循环中检查每一个对阵列。最好将所有1000个ID放入查询中,并将SELECT查询限制为得分&lt; 50和他们的身份在那套。

如果您发布有关表,索引和比较的更多信息,我可能会更具体。

答案 1 :(得分:0)

如果它是db,那么

似乎很容易回答。在查询之前,在/ tmp中执行日志文件的初始化。然后将microtime()的结果写入文件。在查询之后,将fwrite另一个microtime()的结果。运行一次脚本。你将能够看到以下内容:

1)你甚至到达预查询点

2)脚本是否在查询中间失败

3)如果查询没有使脚本崩溃

,查询需要多长时间