我使用循环创建查询列表:
chunks = 1000
chunkTimeInS = (endDate - startDate).total_seconds()/chunks
queryList=[]
for timeChunk in range(0,chunks):
startTime=startDate+timedelta(seconds=chunkTimeInS*timeChunk)
endTime=startDate+timedelta(seconds=chunkTimeInS*(timeChunk+1))
queryList.append(myModel.objects.using('myDB')
.exclude(myValue1=-99)
.filter(timestamp__gte=startTime, timestamp__lt=endTime)
.order_by("timestamp")
.aggregate(
Avg('myValue1'),
Avg('myValue2'),
myValue3 = Avg(F('myValue3')*F('myValue3')),
)
)
我想通过执行以下操作将所有数据保存到列表中:dataList=list(queryList)
。这个电话花了太长时间。我猜是由于queryList中的大量查询。
有没有办法将此列表合并为一个查询?或者也许是其他加速数据库访问的解决方案。
使用的数据库是Oracle 11g。