一个数据表的设计问题

我这里有两个表,
帖子表 post 如下图:
附件表 attach 如下图:

假如在显示帖子详情的时候,是需要将帖子内容和附件 都显示出来的,
方式一 : 我是在post表加入一个 字段 "attch", 用来表示"有无附件", 取值1 为有,0为没有,有的话就去attch表中查询,没有的话就不用取attach表查询
方式二: 不在post表加字段, 不管是显示哪个帖子,我都去attach表中查询有无关联附件数据,有的话就取,没有就不取.

问题: 在百万级数据量的情况下,哪种方式比较合理

阅读 1.8k
3 个回答

个人觉得可以在附件表添加帖子表的主键编号即可。

id
post_id
filename
url

然后去联表查就可以了,详情是 查一条post数据,连表去查一下attach 不会浪费性能

新手上路,请多包涵

attach表中记录帖子ID,并在此字段建立索引。

然后选择方式二查询

其实还是一样的,看你的业务了。既然问这个那你们肯定没用innoDB咯,那么:

  1. 列表显示的时候是否有展示文章是否包含附件/显示附件数量的需求?
  2. 前端拉取数据的时候列表拉取和详情拉取的数据格式是否一样?
    2.1 不一样:列表时只拉标题,且不需要知道是否有附件
    2.2 一样:显示详情时直接渲染,不需要再次获取详情
  3. 2.1的扩展,需要再次拉取详情的情况下,附件是否只是用于下载?如果内容里面用到了附件,那么必须一次查询返回文件+所有附件,否则可以分两次请求去做,这样文章展示更快,反正附件都是在末尾列出的,用户体验更好。

然后自然就知道选哪个方式了。

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