Python Django静止框架嵌套模型的性能

Python Django静止框架嵌套模型的性能,python,django,django-rest-framework,Python,Django,Django Rest Framework,我使用分析了我的Django应用程序,结果表明,对于200000个db条目,GET list调用总共需要701ms,其中只有36ms用于查询(我使用预回迁相关的和选择相关的和分页) 由于我假设db查询将花费最多的时间,我想知道我是否做错了什么,因为95%的时间都没有花在查询上 我的主要度量模型非常嵌套,如下所示 等级测量(models.Model): filetype=models.ForeignKey(filetype) 传感器=型号。外键(传感器) sensorpositions=model

我使用分析了我的Django应用程序,结果表明,对于200000个db条目,GET list调用总共需要701ms,其中只有36ms用于查询(我使用
预回迁相关的
选择相关的
和分页)

由于我假设db查询将花费最多的时间,我想知道我是否做错了什么,因为95%的时间都没有花在查询上

我的主要度量模型非常嵌套,如下所示

等级测量(models.Model):
filetype=models.ForeignKey(filetype)
传感器=型号。外键(传感器)
sensorpositions=models.ManyToManyField('Sensorposition'))
实验=模型。外键(实验,相关_name=“测量实验”)
data=models.FileField(null=True)
前端希望每个字段都有详细的嵌套json输出,因此序列化程序不仅返回pk,还返回外部模型的所有子字段:

class MeasurementSerializer(MeasurementSerializer):
sensor=SensorDetailSerializer(many=False,read\u only=True)
sensorpositions=SensorpositionSerializer(多个=真,只读=真)
实验=实验详细信息FormMeasurementSerializer(多个=假,只读=真)
filetype=FiletypeSerializer(many=False,read\u only=True)
类ExperimentDetailFormMeasurementSerializer(ExperimentSerializer):
persons=PersonSerializer(多个=真,只读=真)
条件=条件序列化程序(多个=真,只读=真)
location=LocationSerializer(many=False,read\u only=True)
layout=LayoutSerializer(many=False,read\u only=True)

那么,我只是因为嵌套序列化而浪费了很多时间,还是像701ms这样的响应时间很正常?

看起来序列化200k项需要大量CPU时间。Python在处理大量数据时不是很有效。通常约1米,is开始需要几秒钟。也许你应该缩小页面的大小。但是大小为100的分页不是每页一次只能序列化100个对象吗?问题是你检索了多少个相关的对象并将其放入响应中。对于所有这些相关对象,序列化也是必要的。对于相关对象,您指的是所有外键或仅具有
related\u name=?看起来序列化200k项将需要大量CPU时间。Python在处理大量数据时不是很有效。通常约1米,is开始需要几秒钟。也许你应该缩小页面的大小。但是大小为100的分页不是每页一次只能序列化100个对象吗?问题是你检索了多少个相关的对象并将其放入响应中。对于所有这些相关对象,序列化也是必要的。对于相关对象,您指的是所有外键或仅具有
related\u name=