PHP / SQL最大数组大小问题的替代解决方案

时间:2011-08-23 18:24:21

标签: php mysql sql arrays memory

我在MYSQL中的100个数据库中捆绑了一个表(即database_1中表的第1行,database_2中表的第2行,...,database_100中表的最后x行)

每当用户访问游戏的朋友时,每个表都有一行。 列是iuin,logtime,beuin。 iuin是访问者的用户ID。 beuin是被访问的朋友的用户ID。 logtime是访问时间。

我想找到一周内访问过的不同朋友。 每天访问的用户大约有300,000个。

但是,当我将代码扩展到计算一周时,我的内存耗尽。 我的代码基本上使用SELECT DISTINCT beuin为每个数据库中的表选择一周进行SQL查询。我将所有beuin存储在一个数组中,如果它尚未存储(所以我计算了被访问的不同朋友),并在最后返回数组的大小。

仅供参考,我无法编辑数据库,例如将不同数据库中的所有表连接到一个表中。

有没有其他方法可以做到这一点? 感谢

1 个答案:

答案 0 :(得分:0)

如果没有这个,你很难说出来。但我认为你可以使用mysql解决这个问题。我的快速解决方案:

  1. 创建表 - 如果不存在,则为CREATE表users_ids(user_id INT NOT NOT DEAULT 0 PRIMARY KEY(UNIQUE));在第一个db
  2. 截断users_ids
  3. 运行100个查询,如INSERT IGNORE INTO db1.users_ids从db1.table1中选择不同的user_id;
  4. 从users_ids中选择count(*);