Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django:一个模型有几个表。_Django_Database - Fatal编程技术网

Django:一个模型有几个表。

Django:一个模型有几个表。,django,database,Django,Database,我有一个模型“消息”,我用它来存储整个网站的消息。这些是讨论中的信息、私人信息,可能还有聊天。它们都存储在一个表中。我想知道如果我在几个模型和表格之间传播信息是否会更快。一个用于聊天,一个用于讨论等等 因此,我应该将所有消息保存在一个表/模型中,还是创建几个相同的模型/表?一个“表”将更好地用于搜索目的(您可以一次“搜索”所有消息) 但是,多个表可能受益于速度 为什么不使用抽象类呢 class MessageBase(models.Model): subject = models.Cha

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

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

一个“表”将更好地用于搜索目的(您可以一次“搜索”所有消息)

但是,多个表可能受益于速度

为什么不使用抽象类呢

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

class ChatMessage(MessageBase):
    pass
这将创建2个表,ChatMessage表直接引用MessageBase表。这将为您提供两个方面的最佳选择。使用MessageBase“搜索”可以获取任何消息,但使用其特定的模型类保存并引用所有其他消息


(请注意,这里的python可能有点错误,因为它还没有经过测试,但我相信您已经明白了!)

只要你在
type
列上有一个索引并对其进行过滤,它的速度就差不多了。当你的表变得很大时,只需在
type
列上进行切分,它的性能将与处理多个表相同,但你的应用程序只会看到一个大表