2011-08-23 28 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中選擇計數(*);