ユーザーごとに投稿の既読/未読ステータスを処理する必要があります。コンマ区切りの user_id を格納するために非正規化列を使用しています。テキスト列であるため、選択クエリのパフォーマンスが低下します。
ここで、ユーザー A - 1、ユーザー B-2、ユーザー C-4、およびユーザー D-8 (ビット単位) というすべてのユーザーに定数を割り当て、その組み合わせを整数列に格納します。 ,C read 整数列の値は (1+4) になります。問題は、いいえです。組み合わせが制限されているため、保存できるユーザーの数は、列に62人のユーザーのステータスがあるとします。さらに拡張する必要がある場合は、別の BIGINT 列を追加して他のユーザーを保存する必要があるかもしれません。
その情報を保存する最良の方法は何でしょうか。以下は、私が行う必要があるアクションです。
- 新しい返信が投稿されたら、値を 0 に更新する必要があります (すべての返信を未読にするため)。
- ユーザーが投稿を読んだときに列のステータスを更新します。
- ユーザーの未読の投稿をすべて選択します。
編集: 間接的に 3 番目のアクションに対処しようとしています。その整数列を選択列リストに追加し、mysql 基準として追加する代わりに、アプリケーション コードでユーザーの読み取りステータスを見つけます。いずれにせよ、これは解決策ではありません。私はまだ良いものが必要です。