1

ユーザーごとに投稿の既読/未読ステータスを処理する必要があります。コンマ区切りの user_id を格納するために非正規化列を使用しています。テキスト列であるため、選択クエリのパフォーマンスが低下します。

ここで、ユーザー A - 1、ユーザー B-2、ユーザー C-4、およびユーザー D-8 (ビット単位) というすべてのユーザーに定数を割り当て、その組み合わせを整数列に格納します。 ,C read 整数列の値は (1+4) になります。問題は、いいえです。組み合わせが制限されているため、保存できるユーザーの数は、列に62人のユーザーのステータスがあるとします。さらに拡張する必要がある場合は、別の BIGINT 列を追加して他のユーザーを保存する必要があるかもしれません。

その情報を保存する最良の方法は何でしょうか。以下は、私が行う必要があるアクションです。

  1. 新しい返信が投稿されたら、値を 0 に更新する必要があります (すべての返信を未読にするため)。
  2. ユーザーが投稿を読んだときに列のステータスを更新します。
  3. ユーザーの未読の投稿をすべて選択します。

編集: 間接的に 3 番目のアクションに対処しようとしています。その整数列を選択列リストに追加し、mysql 基準として追加する代わりに、アプリケーション コードでユーザーの読み取りステータスを見つけます。いずれにせよ、これは解決策ではありません。私はまだ良いものが必要です。

4

1 に答える 1

0

私はこのようにして、次のようなテーブルを作成します。

CREATE TABLE views(
    user_id bigint not null,
    post_id bigint not null,
    primary key(user_id,post_id
)

次に、ユーザーのIDと投稿IDのレコードが存在するかどうかを確認します。これを使用して、ビューの数をカウントすることもできます。

于 2011-07-05T12:35:08.687 に答える