I know this question has been asked here a couple of times, but none of the answers had pleased me. This is because almost all of them involve a huge read / write process re
There isn't a lot of choices.
mark every reader thread by each user.
mark every unread thread by each user.
use timestamps to determine if show it as unread or not.
The other alternative is mixing solutions, that is,
1 and 3) show thread as "unread" if they aren't older than X days and there isn't a row marked as readed for the user. The "read" rows can be deleted when they are X day older without affect anything.
Advantages
Disadvantages
Advantages