Если у вас есть проблемы с производительностью базы данных, вы можете переопределить таблицу дружбы следующим образом:
friendshipid, userid, friendid, confirmed
Когда вы запрашиваете последние 50 действий , SQL будет:
SELECT act.*
FROM Activities AS act
INNER JOIN
Friendships AS fs
ON fs.friendid = act.userid
AND fs.user_id = 'logon_user_id'
AND confirmed = TRUE
ORDER BY act.dated DESC
LIMIT 50;
И если в столбце «Friendships (userid)» есть индекс, это даст базе данных возможность оптимизировать запрос.
Переопределенная таблица дружбы должна создавать два кортежа, когда возникает дружба, но она по-прежнему подчиняется правилу бизнеса и имеет преимущество в производительности, когда оно вам необходимо.