0

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

我有 2 张桌子:

  1. 网站上发布的所有消息。
  2. 网站上发布的所有评论。

每条消息都可以有多个与之关联的评论。在消息和与之相关的评论之间建立联系的更好方法是什么?

  1. 有一个包含相关消息 ID 的评论字段。
  2. 有一个消息字段,其中包含 json 格式的相关评论的 id 数组。

我认为通常使用第一种方法,然后使用 MySQL 查询来查找具有相应消息的 message_id 的评论。但是当有数十万条评论时,它的效率会有多高呢?

在这种情况下,解码 json 字符串并通过确切的唯一 ID 访问评论会更高效、更快速吗?

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

4

2 回答 2

1

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

评论 ID | message_id | 评论文本 | 时间戳等

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

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

  • 确定每条消息平均有多少评论
  • 确定大约 5mio 评论需要多少条消息
  • 假设 5mio 评论需要 50,000 条消息
  • 将 comment_table1 [..] comment_table9 添加到您的数据库
  • 在 python 中切换:如果 message_id > 50,000 -> 然后查看 comment_table2 等。
  • 当然,您必须相应地保存评论

这对于大量条目应该是有效的。

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

于 2013-05-20T12:59:34.703 回答
0

选项一是最好的方法。您需要message_id在评论表中的列上建立索引。这允许 MySQL 快速有效地提取特定消息的所有评论,即使有数十万条评论。

于 2013-05-20T11:33:04.543 回答