我有三个mysql表:
用户-包含用户详细信息
帖子-包含帖子详细信息
post\u user-包含每个用户应该访问哪个post(用于读取目的)
我真的需要pivot表,因为有很多逻辑决定用户是否可以/不能阅读文章。
此解决方案存在一些问题:
第一个问题是,我有超过200k个活动用户,因此每次创建一个新的post时,都会向pivot表插入200k行(post\u user)
第二个问题是获取每个用户的帖子时。它有点慢,所以我尝试使用redis为每个用户存储查询结果,这样我就不必从那个巨大的表中获取结果。
数据库规模增长非常快:/
1条答案
按热度按时间55ooxyrt1#
每行增加20万行
post
--哎呀!这本身就是一个糟糕设计的标志。听起来“层次树”的id可以作为“角色”或“组”来使用。
不管它叫什么,实现都是一样的:两个关系表:
用户<->组(例如,用户位于树的哪个部分)
组<->post(哪些组可以读取特定的post)
两者都是many:many,并应使用此处的性能指南来实现。请注意
id
(对于Map表)是无用的,并且可能会妨碍性能。