我有一个模型“消息”,我用它来存储整个站点的消息。这些是讨论,私人消息和聊天中的消息。它们都存储在一个表中。我想知道如果我在几个模型和表格之间传播消息会更快。一个用于聊天,一个用于讨论,等等。
那么我应该将所有消息保存在一个表/模型中还是创建几个相同的模型/表?
答案 0 :(得分:1)
一个“表格”更适合搜索目的(您可以一次“搜索”所有邮件。
但是,多个表可能会受益于速度。
为什么不使用抽象类?
class MessageBase(models.Model):
subject = models.CharField(max_length=255)
test = models.TextField()
class ChatMessage(MessageBase):
pass
这将创建2个表,ChatMessage表只是直接引用MessageBase的表。这将为您提供两全其美的体验。使用MessageBase“搜索”获取任何内容的消息,但使用特定的模型类保存并引用所有其他消息。
(请注意,这里的python可能有些错误,因为它尚未经过测试,但我相信你明白了!)
答案 1 :(得分:1)
只要您的type
列上有索引并对其进行过滤,就会有相同的速度。当你的表变得非常大时,只需在type
列上创建分片,它与执行多个表的性能相同,但你的应用只会看到一个大表。