1

我需要处理每个用户的帖子的已读/未读状态。现在写我正在使用非规范化列来存储逗号分隔的 user_ids。由于它是文本列,因此选择查询的性能会降低。

现在我想为所有用户分配一个常量,比如用户 A - 1、用户 B-2、用户 C-4 和用户 D-8(按位),并将其组合存储在一个整数列中。所以当用户 A ,C 读取整数列的值将是 (1+4) 5。并在条件中使用按位运算符查询已读/未读帖子。问题是没有。我可以存储为组合的用户数被限制在一列中说 62 个用户的状态。如果我必须进一步扩展,我可能会添加另一个 BIGINT 列来存储其他用户。

存储该信息的最佳方式是什么。以下是我需要执行的操作。

  1. 当发布新回复时,我必须将值更新为 0(以使每个回复都未读)。
  2. 当用户阅读帖子时更新列中的状态。
  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 回答