gpt4 book ai didi

python - Django 查询集上的 random.sample : How will sampling on querysets affect performance?

转载 作者:行者123 更新时间:2023-11-28 20:41:56 27 4
gpt4 key购买 nike

我试图从我的查询集中抽取一些记录来提高性能,例如:

from random import sample
from my_app import MyModel


my_models = MyModel.objects.all()

# sample only a few of records for performance
my_models_sample = sample(my_models, 5)

for model in my_models_sample:
model.some_expensive_calculation

但我觉得它只会在执行时间方面变得更糟。

random.sample() 在幕后实际上是如何工作的?它会不会对 Django 查询集造成相当大的性能负担?

最佳答案

由于 random.sample() 将强制计算查询集 my_models,您的程序的执行时间将在很大程度上取决于 MyModel 的总数> 数据库中的对象。

为了提高性能并避免将整个查询集加载到内存中,您最终可能会按照描述 here 实现自己的采样函数。连同 .iterator()方法。

或者,您也可以依靠数据库服务器通过order_by('?') 为您进行采样。如下:

MyModel.objects.order_by('?')[:5]

就我个人而言,我不会推荐后一种查询,因为查询可能既昂贵又缓慢,具体取决于您使用的数据库后端。 (尤其是 MySQL)

关于python - Django 查询集上的 random.sample : How will sampling on querysets affect performance?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31801826/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com