MySQL 中的表拆分



我在数据库表拆分方面遇到异常情况;我有一个名为"消息"的表,其中包含要通过电子邮件发送的消息的信息:

Message                              Status
--------------------------------     -------------
id | subject | body | status_id      status_id | caption
--------------------------------     ----------------------
1    random    bla    3              1           draft
2    second    hello  3              2           scheduled
15   subj      ok     1              3           archived

创建消息时,它的状态会自动设置为 draft ,它可以scheduled,最后,当发送给至少一个联系人时,它的状态是 archived

我的老板建议将消息拆分为three tables命名

草案

预定和

存档。

实际上,几乎每次您在数据库中搜索message以发送(status is 'draft')时,该表都会包含大量不需要的数据(状态为"已存档"的消息)。但是,如果我拆分表,每次更改消息状态时,我都必须将其插入到相应的表中,并从当前status表中delete

由于我以前从未听说过这种做法,因此我征求意见。split表是否有效?提前致谢

您不需要为此拆分表。对于优化的查询,您应该添加更多索引,特别是您可以在status_id列上使用索引。此外,我不认为将状态放在单独的表中有什么意义。如果您需要标题,您可以将其用作status_id,否则您可以只使用常规整数。

在我看来,这在处理消息时会产生不必要的开销。 使用status_id过滤结果应该提供查找处于"草稿"状态的邮件所需的内容。 只要表上有适当的索引,性能就应该不是问题。 在某些时候,根据数量,您可能希望真正将这些消息存档到另一个表,但这纯粹是设计考虑。 这取决于您是否需要在指定的时间内保留这些消息的记录。

相关内容

  • 没有找到相关文章

最新更新