Python-Django-列表的值总和太慢

Python-Django-列表的值总和太慢,python,django,python-2.7,sum,django-views,Python,Django,Python 2.7,Sum,Django Views,我有一个Django项目,我用它来显示特定时间段的能耗。我使用以下代码从数据库中获取数据: consumptions = Measurement.objects.filter(idhouse=house) filtered = consumptions.values_list("cost",flat=True).filter(enddatetimestamp__gt=startdate,enddatetimestamp__lte=enddate) total = sum(filtered) 我

我有一个Django项目,我用它来显示特定时间段的能耗。我使用以下代码从数据库中获取数据:

consumptions = Measurement.objects.filter(idhouse=house)
filtered = consumptions.values_list("cost",flat=True).filter(enddatetimestamp__gt=startdate,enddatetimestamp__lte=enddate)
total = sum(filtered)
我得到了9000个值的列表,但当我对这些值求和时,需要3-4秒。我不知道为什么要花这么多时间(我已经检查了queryset是否快速获得)。此外,我还测试了以下代码:

filtered=consumptions.objects.filter(enddatetimestamp__gt=startdatets,enddatetimestamp__lte=enddatets).aggregate(total=Sum('cost'))
total = filtered['total']
然而,它也需要3-4秒。我创建了一个python脚本,它完成了相同的工作:

array = range(9000)
start = datetime.datetime.now()
total = sum(array)
print "Time: \t{}".format(datetime.datetime.now()-start)
在这种情况下,脚本需要0.000176秒。考虑到在Django的代码中,为了得到我想要的消耗量,我只点击了一次数据库,我不知道两者之间的区别在哪里。所以从理论上讲,这需要同样的时间

有人能帮我吗


提前感谢。

您是如何检查查询集是否快速获得的?请记住,
filtered=consumpions.objects.filter(…)
不会导致对queryset求值,您需要执行类似于
results=list(filtered)
的操作来获取结果。感谢您的帮助,我意识到问题与获取数据有关,而不是求和。但是,如果我使用
filtered=consumpions.objects.filter(enddatetimestamp\uu gt=startdatets,enddatetimestamp\uu lte=enddatets)。聚合(total=Sum('cost'))
仍然需要3-4秒。你知道有什么方法可以让它更快吗?或者这只是数据库的问题?听起来像是数据库的问题,而不是Django的问题。例如,可以通过添加索引来加快速度。您是如何检查查询集是否快速获得的?请记住,
filtered=consumpions.objects.filter(…)
不会导致对queryset求值,您需要执行类似于
results=list(filtered)
的操作来获取结果。感谢您的帮助,我意识到问题与获取数据有关,而不是求和。但是,如果我使用
filtered=consumpions.objects.filter(enddatetimestamp\uu gt=startdatets,enddatetimestamp\uu lte=enddatets)。聚合(total=Sum('cost'))
仍然需要3-4秒。你知道有什么方法可以让它更快吗?或者这只是数据库的问题?听起来像是数据库的问题,而不是Django的问题。可以通过添加索引等方式加快速度。