Реферральная система

Нужно выбрать количество приглашенных первого и второго уровня.

Получаем количество приглашенных первого уровня

SELECT COUNT(*) FROM ref WHERE referrer = @id 

Второго уровня

SELECT COUNT(*) FROM ref WHERE referrer IN (SELECT referral FROM ref WHERE referrer = @id);

Можно ли это все сделать одним запросом? Можно ли как то ускорить при том что у одного пользователя может быть приглашенных первого уровня > 25000?

+-----------+--------------+------+-----+---------+----------------+
| Field     | Type         | Null | Key | Default | Extra          |
+-----------+--------------+------+-----+---------+----------------+
| id        | int(11)      | NO   | PRI | NULL    | auto_increment |
| referrer  | int(11)      | NO   |     | NULL    |                |
| referral  | int(11)      | NO   |     | NULL    |                |
| date_time | datetime     | NO   |     | NULL    |                |
+-----------+--------------+------+-----+---------+----------------+

Ответы (0 шт):