2011-08-23 67 views
1

我在MYSQL中的100个数据库中捆绑了一张表(即database_1中表的第1个x行,database_2中第2个x表的行,...,最后x个行在数据库_100中的表)PHP/SQL最大数组大小问题的替代解决方案

无论用户何时访问游戏的朋友,每个表都有一行。 列是iuin,logtime,beuin。 iuin是访问者的用户名。 beein是被访问的朋友的用户名。 logtime是访问时发生的。

我想找到一周内访问过的不同朋友的数量。 每天访问的用户大约有30万。

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

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

+0

将它存储在数组中并获取数组大小的目的是什么? – webbiedave

+0

所以我只计算不同的用户。理想情况下,这些表没有绑定到不同的数据库中,所以我可以只做SELECT DISTINCT beuin并返回mysql_num_rows()。 – Mark

回答

0

很难说没有一个你的任何事情。但我认为你可以用mysql解决这个问题。我的快速解决方案:

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