Реферральная система
Нужно выбрать количество приглашенных первого и второго уровня.
Получаем количество приглашенных первого уровня
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 | |
+-----------+--------------+------+-----+---------+----------------+