Python 克隆Django模型或在第二个模型中添加差异化字段?

Python 克隆Django模型或在第二个模型中添加差异化字段?,python,mysql,django,django-models,Python,Mysql,Django,Django Models,我必须将直播“测试”数据和培训数据存储在mysql数据库中。我需要做同样的Django模型。现在数据的结构完全相同,即时间、值、标签。两个模型之间的唯一区别是,一个用于培训数据,另一个用于保存现场测试数据(生产数据) 在性能方面,哪种方法更适合创建模型: 创建两个模型TrainDataModel和TestDataModel 创建单个模型“Data”,并添加一个布尔字段,如“training”,以指示数据是否是测试/训练数据集的一部分 现在,训练将在初始阶段进行,与测试数据相比,训练的规模要小得多

我必须将直播“测试”数据和培训数据存储在mysql数据库中。我需要做同样的Django模型。现在数据的结构完全相同,即时间、值、标签。两个模型之间的唯一区别是,一个用于培训数据,另一个用于保存现场测试数据(生产数据)

在性能方面,哪种方法更适合创建模型:

  • 创建两个模型TrainDataModel和TestDataModel
  • 创建单个模型“Data”,并添加一个布尔字段,如“training”,以指示数据是否是测试/训练数据集的一部分
  • 现在,训练将在初始阶段进行,与测试数据相比,训练的规模要小得多。此外,测试数据量将是巨大的(约20-30GB)

    处理数据涉及对收集的数据运行分类算法。在我的特殊情况下,每个分类任务都必须频繁访问培训数据

    • 对于第一种情况,我必须查询两个表。查询训练数据会很快,因为数据量非常小
    • 对于第二种情况,数据库将变得巨大,这将影响查询响应时间,但只能访问单个表
    对于我的用例,哪个更快


    我是数据库查询优化的新手。因此,建议/建议将不胜感激。如果有其他方法可以做到这一点(除了上面提到的两种方法外),也欢迎您提出这些建议。

    我想创建两种不同的模型,因为您可以将它们用于不同的事情,即使数据几乎相同。你不知道,也许在未来,你会因为一个特定的原因需要新的属性,你将不得不拆分模型。。。我认为你最好现在就做

    即使您的案例只有一个模型,您也需要查询两次,因为首先您必须根据标记“trainDataModel”进行过滤,其次是标记“testDataModel”,我仍然认为现在拆分它们更好

    关于查询优化,您可以在Django文档中查看此主题:

    如果有必要,不要忘记创建索引,在最后一种情况下,您可以进行压力测试

    祝你好运

    使用模型继承

    class DataModel(model):
        time = ...
        value = ...
        label = ...
    
    class TrainDataModel(DataModel):
        pass
    
    class TestDataModel(DataModel):
        pass
    

    对于优化,你可以使用索引,就像Lara说的,访问django文档

    我曾经想到过这一点,但是我反对它,因为我有很多这样的模型。但是我必须继续这样做,因为我找不到任何其他的方法来做同样的事情而不引入第三个模型。谢谢!我考虑了这两个答案,但不能两者都打分。谢谢你的链接。我会调查的。