Wiele większych programów forum używa tabeli śledzenia, aby nadążyć za tym, kto co przeczytał, coś takiego (bardzo uproszczone):
CREATE TABLE topic_tracking (
user_id INT NOT NULL,
topic_id INT NOT NULL,
last_visit DATETIME NOT NULL,
PRIMARY KEY (user_id, topic_id)
)
Następnie używasz przyłączenia na tej tabeli, aby sprawdzić, czy wyświetlany post jest przeczytany, czy nie. Ponieważ będziesz stronicować swoje wątki, powinno to wygenerować stosunkowo niewiele dodatkowych zapytań (w zależności od tego, ile postów wyświetlasz na stronie).
Gdy użytkownik odwiedza wątek, zaktualizuj tę tabelę śledzenia o sygnaturę czasową jego wizyty. Następnie, wyświetlając linki do wątków, sprawdź tę tabelę, aby zobaczyć, czy ich ostatnia_wizyta jest wcześniejsza niż ostatni post w wątku. Pozwala to również wyświetlać „zaktualizowane” wątki, a nie tylko „nowe”.