我使用silk分析了我的Django应用程序,结果发现对于200000个db条目,GET list调用总共需要701ms,其中只有36ms用于查询(我使用prefetch_related
和select_related
以及分页)
因为我假设db查询会占用大部分时间,所以我想知道我是否做错了什么,因为95%的时间都没有花在查询上
我的主要度量模型是嵌套的,如下所示
class Measurement(models.Model):
filetype = models.ForeignKey(Filetype)
sensor = models.ForeignKey(Sensor)
sensorpositions = models.ManyToManyField('Sensorposition')
experiment = models.ForeignKey(Experiment, related_name = "measurementexperiment")
data = models.FileField(null=True)
前端需要每个字段都有一个详细的嵌套json输出,因此序列化程序不仅返回pk,还返回外部模型的所有子字段:
class MeasurementSerializer(MeasurementSerializer):
sensor = SensorDetailSerializer(many=False, read_only=True)
sensorpositions = SensorpositionSerializer(many=True, read_only=True)
experiment = ExperimentDetailForMeasurementSerializer(many=False, read_only=True)
filetype = FiletypeSerializer(many=False, read_only=True)
class ExperimentDetailForMeasurementSerializer(ExperimentSerializer):
persons = PersonSerializer(many=True, read_only=True)
conditions = ConditionSerializer(many=True, read_only=True)
location = LocationSerializer(many=False, read_only=True)
layout = LayoutSerializer(many=False, read_only=True)
那么,我只是因为嵌套序列化而浪费了很多时间,还是像701ms那样的响应时间很正常
目前没有回答
相关问题 更多 >
编程相关推荐