2009-12-04 28 views
1

我有一个模型“消息”,我用它来存储整个网站的消息。这些是讨论中的消息,私人消息和可能的聊天。它们全部储存在一张桌子里。我想知道如果我在几个模型和表格之间传播信息会不会更快。一个用于聊天,一个用于讨论等。Django:一个模型的几张表。

所以我应该保留所有的消息在一个表/模型或创建几个相同的模型/表?

回答

1

只要你有你的type列的索引并对其进行过滤,它将具有相同的速度。当您的表格变得非常大时,只需在type列中进行分割即可,它与执行多个表格的性能相同,但您的应用只会看到一个大表格。

1

一“表”将成为搜索目的更好的(同时对所有的邮件,你可以在“搜索”。

然而,多个表可能会受益于速度。

为什么不使用抽象类?

class MessageBase(models.Model): 
    subject = models.CharField(max_length=255) 
    test = models.TextField() 

class ChatMessage(MessageBase): 
    pass 

这将创建2个表,该表ChatMessage只是直接引用该表MessageBase,这会给你两全其美。“搜索”使用MessageBase以获取任何消息,但保存,并参考,所有其他呃使用它的特定模型类的消息。

(请注意,这里的蟒蛇可能是稍有不妥,因为它尚未经过测试,但我敢肯定你的想法!)