我需要处理每个用户的帖子的已读/未读状态。 现在写我正在使用非规范化列来存储逗号分隔的user_ids。由于它是文本列,因此选择查询的性能会降低。
现在我想为所有用户说明一个常量 用户A-1,用户B-2,用户C-4和用户D-8(按位),并将其组合存储在整数列中。因此当用户A,C读取整数列的值时(1) +4)5。 并使用条件中的按位运算符来查询已读/未读的帖子。问题是没有。我可以作为组合存储的用户被限制在一列中说62用户的状态。如果我必须进一步扩展,我可能会添加另一个BIGINT列来存储其他用户。
什么是存储该信息的最佳方式。 以下是我需要采取的行动。
编辑: 我试图间接解决第三个问题。我在选择列列表中添加该整数列,并在应用程序代码中查找用户的读取状态,而不是添加为mysql条件。任何方式这都不是解决方案。我仍然需要一个好的。
答案 0 :(得分:0)
我会这样做,创建一个这样的表:
CREATE TABLE views(
user_id bigint not null,
post_id bigint not null,
primary key(user_id,post_id
)
然后只检查是否存在具有用户ID和帖子ID的记录。您也可以使用它来计算视图数量。