MySQL中良好的一对多关系实践

时间:2013-05-20 10:15:58

标签: mysql

我正在开发MySQL数据库的结构,我遇到了一个关于其结构的小决策问题。

我有两张桌子:

  1. 网站上发布的所有消息。
  2. 网站上发布的所有评论。
  3. 每条消息都可以有多个与之关联的评论。 什么是在消息和与之相关的评论之间建立联系的更好方法?

    1. 有一个包含相关消息ID的评论字段。
    2. 为包含json格式的相关注释的ID数组的消息添加字段。
    3. 我认为通常使用第一种方法然后使用MySQL查询来查找具有相应消息的message_id的注释。但是,当有数十万条评论时它会有多高效?

      在这种情况下解码json字符串并通过完全唯一ID访问注释会更有效,更快吗?

      如果重要的话,我正在使用python作为后端。

2 个答案:

答案 0 :(得分:1)

第一个选择是要走的路。所以你会:

comment_id | message_id | comment_text |时间戳等。

对于您的MySQL表,您可以指定在前两列上构建索引以获得良好的性能 10Mio评论应该可以正常工作,但您可以自己测试这个测试场景。

如果您想计划更多,那么在大约100,000条评论之后,您可以执行以下操作:

  • 确定每封邮件平均有多少条评论
  • 确定约5个月评论需要多少条消息
  • 让我们说5百条评论需要50,000条消息
  • 将comment_table1 [..] comment_table9添加到您的数据库
  • 在python中切换:if message_id> 50,000 - >然后看一下comment_table2等。
  • 当然,您必须相应地保存评论

这应该适用于大量条目。

您可以根据个人托管(性能)环境调整数字......

答案 1 :(得分:0)

选项一是最好的方法。您需要注释表中message_id列的索引。这使MySQL能够快速有效地提取特定消息的所有注释,即使有数十万条注释也是如此。