2013-12-01 5 views
0

Я следующие таблицами MySQL ...Mysql Оптимизация запросы

пользователей таблица таблица

| id | account_number | referred_by | 
+-----+----------------+-------------+ 
| 44 | 100   | 200   | 
+-----+----------------+-------------+ 
| 182 | 200   | 500   | 
+-----+----------------+-------------+ 
| 184 | 300   | 500   | 
+-----+----------------+-------------+ 

Прибыли

| id | account_number | earnings | 
+-----+----------------+-------------+ 
| 44 | 100   | 50.00  | 
+-----+----------------+-------------+ 
| 182 | 200   | 20.00  | 
+-----+----------------+-------------+ 
| 184 | 300   | 10.00  | 
+-----+----------------+-------------+ 

Я пытаюсь принести сумму total_earnings заработанного указанных членами, например. Если total_earnings членов будет 30,00 referred_by номер счета «500», и я попробовал следующий запрос MySQL ...

SELECT SUM(earnings) 
FROM earnings 
WHERE account_number IN 
    (SELECT account_number FROM users WHERE referred_by = 500); 

Это, однако, слишком медленно. Как я могу оптимизировать этот запрос?

ответ

1

попробовал бы это?

SELECT SUM(earnings.earnings) 
FROM earnings INNER JOIN users USING(account_number) 
WHERE users.referred_by = 500; 

пользователи таблицы должны иметь INDEX(referred_by, account_number), доходов должны INDEX(account_number)

+0

спасибо за предложение, я постараюсь это. – seoppc

Смежные вопросы