我在Django中查询对象,然后为这些对象创建字典理解。当我进行速度测试时,该功能需要.9秒,即使它只查询104个对象。什么是代码这么久?我正在运行DEBUG = False并尝试使用values_list()。另外,我正在使用postgresql。
@speed_test
def find_user_fc_ids(user_id=1):
try:
flavor_compounds = UserFlavorCompound.objects.filter(user_id__in=user_id)
return {flavor.flavor_id: flavor.score for flavor in flavor_compounds}
except UserFlavorCompound.DoesNotExist:
flavor_compounds = UserFlavorCompound.objects.filter(user_id__in=1)
return {flavor.flavor_id: flavor.score for flavor in flavor_compounds}
答案 0 :(得分:0)
也许你会结帐你的模特。如果您使用ForeignKey,您可能会使用select_related查询它们。或者,如果您使用的是ManyToMany字段,则可以使用预取相关来调用它们。
我猜这些优化可以很好地改善您的表现。
您可以从官方django文档中查看:prefetch_related和select_related。