Я пытаюсь заставить это сделать:
<?php
$good_customer = 0;
$q = mysql_query("SELECT user FROM users WHERE activated = '1'"); // this gives me about 40k users
while($r = mysql_fetch_assoc($q)){
$money_spent = 0;
$user = $r['user'];
// Do queries on another 20 tables
for($i = 1; $i<=20 ; $i++){
$tbl_name = 'data' . $i;
$q2 = mysql_query("SELECT money_spent FROM $tbl_name WHERE user = '{$user}'");
while($r2 = mysql_fetch_assoc($q2)){
$money_spend += $r2['money_spent'];
}
if($money_spend > 1000000){
$good_customer += 1;
}
}
}
Это всего лишь пример. Я тестирую на localhost, для одного пользователя, он возвращается очень быстро. Но когда я пытаюсь 1000, это занимает вечность, даже не упомянул 40k пользователей.
В любом случае, чтобы оптимизировать / улучшить этот код?
EDIT:
Кстати, каждая из 20 других таблиц имеет ~ 20 - 40 тыс. Записей
EDIT2:
Хорошо, отбросьте идею "потратить деньги". Это мои текущие структуры:
таблица пользователей => пользователь PK
logs_week_1 table => пользователь FK.
logs_week_2 table => пользователь FK
logs_week_3 table => пользователь FK
... в будущем будет больше таблиц журналов.
Я хочу узнать «среднее время», которое они проводят на моем сайте, и сколько времени хранится в каждой из таблиц журналов.
Так вы, ребята, говорили, что еженедельное хранение журналов - плохая идея? Я должен слить в одну таблицу?