У меня проблемы с производительностью запросов IN в MYSQL.
В основном я строю график друзей, и когда пользователь ~ <5 друзей, он медленно сканирует </p>
однако для пользователей с большими друзьями (7000+) - он работает супер быстрее.
Вот мой макет-запрос:
SELECT *
FROM activity
WHERE user_id IN
(
SELECT friend_id
FROM friends
WHERE user_id = 1 and approved = 1
)
order by activity.created_at DESC
LIMIT 25
По какой-то причине, если у user_id <5 друзей, запросу требуется 15 секунд, чтобы вернуть 0 записей. </p>
В таблице друзей у меня есть индекс user_id, и он утвержден. В записи активности у меня есть индекс на creat_at.
Любые предложения или ре-факторинг?