我有一个模型“消息”,我用它来存储整个网站的消息。这些是讨论中的消息,私人消息和可能的聊天。它们全部储存在一张桌子里。我想知道如果我在几个模型和表格之间传播信息会不会更快。一个用于聊天,一个用于讨论等。Django:一个模型的几张表。
所以我应该保留所有的消息在一个表/模型或创建几个相同的模型/表?
我有一个模型“消息”,我用它来存储整个网站的消息。这些是讨论中的消息,私人消息和可能的聊天。它们全部储存在一张桌子里。我想知道如果我在几个模型和表格之间传播信息会不会更快。一个用于聊天,一个用于讨论等。Django:一个模型的几张表。
所以我应该保留所有的消息在一个表/模型或创建几个相同的模型/表?
只要你有你的type
列的索引并对其进行过滤,它将具有相同的速度。当您的表格变得非常大时,只需在type
列中进行分割即可,它与执行多个表格的性能相同,但您的应用只会看到一个大表格。
一“表”将成为搜索目的更好的(同时对所有的邮件,你可以在“搜索”。
然而,多个表可能会受益于速度。
为什么不使用抽象类?
class MessageBase(models.Model):
subject = models.CharField(max_length=255)
test = models.TextField()
class ChatMessage(MessageBase):
pass
这将创建2个表,该表ChatMessage只是直接引用该表MessageBase,这会给你两全其美。“搜索”使用MessageBase以获取任何消息,但保存,并参考,所有其他呃使用它的特定模型类的消息。
(请注意,这里的蟒蛇可能是稍有不妥,因为它尚未经过测试,但我敢肯定你的想法!)