私は、すべてのユーザーにメッセージをブロードキャストすることが 1 つの側面であるメッセージング システムに取り組んでいます。各ユーザーのテーブルにメッセージを挿入する代わりに、メッセージの単一のコピーを含む 1 つのテーブルと、ユーザーの読み取り/削除を追跡する別のテーブルを用意します。
メッセージ表
message_id (primary,auto)
dt
message
Messages_Status テーブル
message_id (int,11)
user_id (int,10,indexed)
user_read (tint,1)
user_delete (tint,1)
--> an index on (message_id,user_id)
ログインしているユーザーの未読メッセージの数を取得しようとしています。その特定のメッセージとユーザーの messages_status テーブルにレコードがない (ユーザーがそれを読んでいない) 場合、またはそのメッセージとユーザーの user_read=0 のレコードがある場合、それもカウントされます。