Алгоритм френдленты
Обычно такие вещи кладутся в отдельную таблицу (называйте это кешем или еще как-то), и не удаляйте из нее, а помечайте удаленным. Ну и шардинг для нее если совсем уж много данных.
Если боитесь заставить пользователя ждать — обрабатывать вариант 2 через очередь.