Fatico a comprendere perchè vuoi usare una IN anzichè un normalissimo JOIN.
Effettivamente hai ragione. Quindi, utilizzando la struttura proposta da FriendFeed, con indici esterni, potrei effettuare una query del genere:

codice:
SELECT e.body 
FROM indice_utenti as iu 
INNER JOIN followers as f ON f.utente_seguito = iu.user_id
INNER JOIN entities as e ON e.entitiy_id = iu.entity_id 
WHERE f.utente_che_segue = 'id dell'utente che richiede il feed'
ORDER BY e.timestamp DESC
LIMIT 0, 10
Non sarebbe comunque più produttivo creare una tabella con tutte le attività da visualizzare (magari con una limitazione a massimo 100 per utente) piuttosto che dover eseguire una query di questo tipo.

Quello che intendo dire è che i vantaggi degli indici esterni, in questo modo, diventano poi dei svantaggi. A questo punto basterebbe inserire un campo indice user_id nella tabella entities e joinare con i follower solo ed esclusivamente quella tabella.

Mamma mia HAHAHAHA


La versione breve è: vuoi fare un sistema per un miliardo di utenti?
Visto che sono in fase di sviluppo vorrei creare i presupposti per eventuali miglioramenti e aggiornamenti. Se una cosa la devi fare, tanto vale che la fai al meglio possibile, per farla durare il più possibile, no?

Poi credo anche io che a questo punto stia diventando più una sorta di ossessione questo discorso. Ma è formativo anche discutere, credo, non solo trovare soluzioni.