[英]Django queryset to dict running slow
我正在Django中查詢對象,然后為這些對象創建字典理解。 當我進行速度測試時,即使只查詢104個對象,該功能也要花費0.9秒鍾。 這么長時間的代碼是什么? 我正在使用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}
也許您會檢查您的模型。 如果您使用ForeignKey,則可能會使用select_related查詢它們。 或者,如果您使用的是ManyToMany字段,則可以將它們稱為與預取相關。
我猜這些優化可以很好地改善您的性能。
您可以從django官方文檔中檢出: prefetch_related和select_related 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.