【发布时间】:2011-08-23 18:24:20
【问题描述】:
我在 MYSQL 中的 100 个数据库中捆绑了一个表(即 database_1 中表的第 1 x 行,database_2 中表的第 2 x 行,...,database_100 中表的最后 x 行)
每当用户拜访朋友玩游戏时,每张桌子都会有一行。 这些列是 iuin、logtime、beuin。 iuin 是访问者的用户 ID。 beuin 是访问过的朋友的用户 ID。 logtime 是访问的时间。
我想找出一周内访问过的不同朋友的数量。 每天访问大约 30 万不同的用户。
但是,当我将代码扩展为一周计算时,内存不足。 我的代码基本上使用 SELECT DISTINCT beuin 为每个数据库中的表在选定的一周内执行 SQL 查询。如果尚未存储所有 beuin,则将其存储在一个数组中(因此我计算访问过的不同朋友),并在最后返回数组的大小。
仅供参考,我无法编辑数据库,例如将不同数据库中的所有表合并到一个表中。
有没有其他方法可以做到这一点? 谢谢
【问题讨论】:
-
将其存储在数组中并获取数组大小的目的是什么?
-
所以我只计算不同的用户。理想情况下,这些表不会捆绑到不同的数据库中,所以我可以只执行 SELECT DISTINCT beuin 并返回 mysql_num_rows()。
标签: php mysql sql arrays memory