Django:一个模型的几个表。

时间:2009-12-04 23:52:14

标签: django database

我有一个模型“消息”,我用它来存储整个站点的消息。这些是讨论,私人消息和聊天中的消息。它们都存储在一个表中。我想知道如果我在几个模型和表格之间传播消息会更快。一个用于聊天,一个用于讨论,等等。

那么我应该将所有消息保存在一个表/模型中还是创建几个相同的模型/表?

2 个答案:

答案 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列上创建分片,它与执行多个表的性能相同,但你的应用只会看到一个大表。