Sai*_*rsi 6 python django django-queryset
我有一个从django queryset返回的大型数据集,我想迭代它.我应该直接迭代查询集还是将结果存储在变量中并迭代它?
for item in Model.objects.all():
do_something()
Run Code Online (Sandbox Code Playgroud)
要么
results = Model.objects.all():
for item in results:
do_something()
Run Code Online (Sandbox Code Playgroud)
据我所知,变量存储在堆中并且更安全,在迭代查询集的情况下,结果将存储在主存储器中.
那么哪一个在空间和速度上有效?
如果您的数据集很大,您可以iterator用来减少内存负载并提高性能,例如
results = Model.objects.all()
for item in results.iterator():
do_something()
Run Code Online (Sandbox Code Playgroud)
您应该只在确实有必要时才这样做,因为它会禁用查询集缓存。在此之后重新使用查询集会导致性能下降。