MySQL-mysql多对多关系分表的问题,怎样切分才合理?

发布于 2016-11-09 07:28:45 字数 107 浏览 1302 评论 2

MYSQL里面有如下的表

user:id username
photo:id name
photo_favour(图片收藏关系表):photo_id user_id

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

浮生未歇 2017-07-11 00:52:20

这种情况我会放弃多对多的形式,弄两个表
user_to_photos: user_id, photo_id_list
photo_to_users: photo_id, user_id_list

1个user喜欢的photo id全塞到photo_id_list
1个photo被哪些用户喜欢了,也全塞到user_id_list

这样的读取就高效了很多,,写的时候注意并发脏写。。。同样你根据user_id爱怎么分表就怎么分。

===

如果收藏量太大,还是不能满足,就要考虑切分记录,1个user可以拥有多条记录,每条记录都可记录多个photo id
user_to_photos: user_id, num, photo_id_list

num字段可有可无,如果你需要精确定位user 222 收藏的 photo 333在哪条记录,就需要安排好算法,找到对应的num

大概是这样,重点是算法逻辑

归属感 2017-06-14 12:05:14

“ 1 个用户会有100条收藏记录” 用户收藏的条数有没有最大条数限制,如果有限制的话可以根据单表最大容纳记录进行合理切分。如果没有限制,可以采用对用户表加字段(该用户收藏标记表索引),动态维护、迁移单表数据大小,缺点增加维护工作。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文