Используйте комбинацию вашего предложения и ответа и комментариев от Освальда.
Автор создает обновление, которое затем добавляет записи в таблицы (ы) уведомлений. Если у автора 10 000 подписчиков, то есть 10 000 записей. Это станет довольно большим, и потребуется использовать оптимизацию, кэширование и т. Д.
Затем последователь подключается через некоторый интервал (через клиента, похожего на веб-сайт Facebook или с рук) и извлекает свои уведомления. В этом случае я получаю уведомления от моего последнего посещения или от всех моих авторов. Опять же, это может быть 10000 строк, как вы указали, но с лучшими ключами поиск будет быстрым, поскольку вы получаете уведомления только для подписчика (его ID). После получения удалите ожидающие уведомления.
Второй альтернативой будет изменение уведомлений, чтобы просто иметь запись для автора, а также пост и дату. Подписчик подключается, запрашивает новые сообщения со времени его последнего поиска, а затем фильтрует их по автору. Попробуйте удалить как можно больше записей в первом запросе, затем попытайтесь выполнить фильтрацию как второй запрос или поиск в кэше ссылок. Не пытайтесь связать оба запроса, так как вы уничтожите сервер базы данных. Использование ключей / индексов, чтобы получить наименьший набор первым.
Если у подписчика есть несколько авторов, сначала запросите обновления автора, а затем - дату. В противном случае выполните поиск по дате, а затем по авторам.