Bunu almak için çalışıyorum:
<?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;
}
}
}
Bu sadece bir örnektir. Ben localhost üzerinde test ediyorum, tek bir kullanıcı için, çok hızlı döner. Ben 1000 deneyin, hatta 40k kullanıcıları söz değil, sonsuza kadar sürer.
Neyse bu kod geliştirmek / optimize etmek için?
EDIT: By the way, each of the others 20 tables has ~20 - 40k records
EDIT2:
Okay, "para harcama" fikrini bırakın. Bu benim şimdiki yapıları:
kullanıcı tablo => kullanıcı PK olduğunu
logs_week_1 tablo => kullanıcı FK olduğunu.
logs_week_2 tablo => kullanıcı FK olduğunu
logs_week_3 tablo => kullanıcı FK olduğunu
... Gelecekte daha günlükleri tablo var olacaktır.
Ben zaman günlükleri tabloları her saklanan benim sitede harcamak "ortalama zaman" bulmak istiyorum.
Yani siz günlükleri saklamak, diyordun haftalık kötü bir fikir mi? Ben bir tablo birleştirmek gerekir?