mysql分表问题

一个文章表(article),文章数量上亿
一个标签表(tags),标签数量在几千个
现在要给文章打tag,建了张中间表关联文章和标签(article_tags)
可能article_tags数量级是文章表的几倍或十几倍
想给article_tags分表,但是查询时会通过tag_id 查询所有标签下面的文章,又会在文章详情里面查询所有标签,这该怎么分表呢?求解决方案.

阅读 2.6k
3 个回答

一篇文章对应多个标签,一个标签下有多篇文章,多对多的关系。
解决方法:
article_tags增加一列,记录文章所有的标签。(毕竟一篇文章的标签不会特别多)
于是就有3列,一列标签id,一列文章id,一列文章所有标签id;
按照标签id分表,通过tag_id 查询能所有标签下面的文章,
所有标签和标签表关联查到所有标签。

你可以将文章对应的标签id以数组的方式存入数据库

分表规则:

tags_id % 10

1、通过tag_id 查询所有标签下面的文章。
根据分表规则找到对应的table,进而查询对应的文章id
2、文章详情里面查询所有标签
文章表建立一个新字段,逗号隔开存储标签

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题