also ich würds db-mässig allgemein auf unread-posts (nicht wie jetzt read-posts) umstellen und dann einfach alle posts, die ein user seit einem monat nicht gelesen hat auch aus der unread-posts table nehmen. weil der kommt 1. sowieso selten oder gar nicht mehr auf die page und wird 2. ganz sicher nicht zig hundert posts lesen, weil die noch markiert sind.
wir können das ja so einrichten, dass der eintrag nur für user gemacht wird, die den lastlogin in den letzten 3 monaten hatten. dann sinds nämlich keine 80 users mehr.
Also ich find das nicht soo kompliziert.
Wenn ein User das Flag gesetzt hat und das Lastlogin-Date > 3 Mnt, dann werden die Unread Posts geloggt (egal mit welcher Variante).
Damit können wir die Tabelle klein halten.
Ja dazu brauchts nur eine Query.
Allerdings ist das ein Query mehr, was sich sicher auch nicht sonderlich Positiv auf die System Performance auswirkt, weil sie bei jedem Seitenaufruf gmacht werden muss.
Die Anzeige könnte man eigentlich auch auf eine Andere Seite auslagern, dann müssten die Posts nicht bei jedem Seitenaufruf gezählt werden. Wieder ein Performancegewinn.
datt ist klar. aber bikos vorschlag dazu ist nicht schlecht, und es macht auch weniger arbeit als pro post 30000 posts durchzuackern (und auf irgendeine art und weise macht das die db). wuerde ich auf jeden fall behaupten.