トピックをまだ読んでいないユーザー向けのフォーラムに値を保存する (これは悪い考えです) ことは、スケーラブルではありません。新しいユーザーのサインアップ時にデータベース内のすべてのトピックにエントリを追加する必要があることに関連する問題も発生するため、本当に必要な場合は逆に行ってください。
リレーショナル テーブルを前に出す代わりに、次のようにしてみてください。
Table: topics
+----+-------+------+-----
| id | title | body | ...
+----+-------+------+-----
| 1 | xyz | .... | ...
Table: replies
+----+-------+------+-----
| id | title | body | ...
+----+-------+------+-----
| 3 | xyz | .... | ...
Table: read_topics
+---------+----------+
| user_id | topic_id |
+---------+----------+
| 2 | 1 |
あなたのアプローチは可能ですが(そして想像しやすいですが)、膨大な数のユーザーがいると崩壊し始め、コメントでほのめかしたのはスケーラビリティです。ここでのもう 1 つの問題は、別のトランザクションを行う前に、データベースからデータを取得して分割し、操作して再結合する必要があるため、このアプローチではパフォーマンスが大幅に低下することです。また、テーブルが 2 つの CGI スレッドによって同時に書き込まれるという問題もあります。それを楽しんでください...
データの操作、並べ替え、データの関係、および保存のためにツールを使用しているため、情報のゴミ捨て場としてだけでなく、それらすべてに使用してください。
1. 私はデータベース最適化の完全な専門家ではありませんが、これよりも優れた方法がある可能性が非常に高いです。テスト!