Una tabella che contenga tutti gli user_id e i post_ids è una cattiva idea, poiché cresce in modo esponenziale. Immagina se la tua soluzione forum crescesse fino a raggiungere un milione di post e 50.000 utenti. Ora hai 50 miliardi di record. Sarà un problema.
Il trucco è usare una tabella come hai detto, ma contiene solo i post che sono stati letti da questo accesso, i post che sono stati pubblicati tra l'ultimo accesso e questo accesso.
Tutti i post pubblicati prima dell'ultimo accesso sono considerati letti.
IE, l'ultima volta ho effettuato l'accesso il 4/3/2011, quindi accedo oggi. Tutti i post pubblicati prima del 03/04/2011 sono considerati letti (non sono nuovi per me). Tutti i post dal 4/3/2011 ad oggi non sono letti a meno che non vengano visualizzati nella tabella di lettura. La tabella di lettura viene svuotata ogni volta che accedo.
In questo modo la tabella dei post letti non dovrebbe mai avere più di duecento record per ogni membro.